From mboxrd@z Thu Jan 1 00:00:00 1970 From: Peter Feigl Subject: [PATCH] ob-sql.el: Add support for Oracle via sqlplus Date: Fri, 18 Dec 2015 10:44:25 +0100 Message-ID: <87bn9ors8a.fsf@nexoid.at> Mime-Version: 1.0 Content-Type: text/plain Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:41544) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1a9rqV-0004M8-8T for emacs-orgmode@gnu.org; Fri, 18 Dec 2015 05:01:08 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1a9rqP-0005fF-Dk for emacs-orgmode@gnu.org; Fri, 18 Dec 2015 05:01:07 -0500 Received: from www.nexoid.at ([178.79.130.240]:41226 helo=mail.nexoid.at) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1a9rqP-0005f4-82 for emacs-orgmode@gnu.org; Fri, 18 Dec 2015 05:01:01 -0500 Received: from nofanex (cm56-227-163.liwest.at [86.56.227.163]) by mail.nexoid.at (Postfix) with ESMTPSA id 2B75EC384 for ; Fri, 18 Dec 2015 11:00:59 +0100 (CET) List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Sender: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org To: emacs-orgmode@gnu.org * lisp/ob-sql.el: Add a database type 'oracle that uses sqlplus to support running SQL blocks against an Oracle database. Use with properties like this (all mandatory): :engine oracle :dbhost :dbport <1521> :dbuser :database :dbpassword TINYCHANGE --- lisp/ob-sql.el | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/lisp/ob-sql.el b/lisp/ob-sql.el index 955adc0..a909298 100644 --- a/lisp/ob-sql.el +++ b/lisp/ob-sql.el @@ -99,6 +99,10 @@ Pass nil to omit that arg." (when user (concat "-U" user)) (when database (concat "-d" database)))))) +(defun org-babel-sql-dbstring-oracle (host port user password database) + "Make Oracle command line args for database connection." + (format "%s/%s@%s:%s/%s" user password host port database)) + (defun org-babel-execute:sql (body params) "Execute a block of Sql code with Babel. This function is called by `org-babel-execute-src-block'." @@ -143,11 +147,29 @@ This function is called by `org-babel-execute-src-block'." (org-babel-process-file-name in-file) (org-babel-process-file-name out-file) (or cmdline ""))) + ('oracle (format + "sqlplus -s %s < %s > %s" + (org-babel-sql-dbstring-oracle dbhost dbport dbuser dbpassword database) + (org-babel-process-file-name in-file) + (org-babel-process-file-name out-file))) (t (error "No support for the %s SQL engine" engine))))) (with-temp-file in-file (insert (case (intern engine) ('dbi "/format partbox\n") + ('oracle "SET PAGESIZE 50000 +SET NEWPAGE 0 +SET TAB OFF +SET SPACE 0 +SET LINESIZE 9999 +SET ECHO OFF +SET FEEDBACK OFF +SET VERIFY OFF +SET HEADING ON +SET MARKUP HTML OFF SPOOL OFF +SET COLSEP '|' + +") (t "")) (org-babel-expand-body:sql body params))) (message command) -- 2.6.2