diff options
author | Peter Feigl <peter.feigl@nexoid.at> | 2015-12-18 10:44:25 +0100 |
---|---|---|
committer | Nicolas Goaziou <mail@nicolasgoaziou.fr> | 2015-12-20 16:54:21 +0100 |
commit | cf8bfc178d315c063a7c5978151fed766caee964 (patch) | |
tree | 0af38961195906bac7222213ac7423781801e0d6 | |
parent | 73803c1cf9d0e4016cd1c36653b40573396bd9e7 (diff) | |
download | org-mode-cf8bfc178d315c063a7c5978151fed766caee964.tar.gz |
ob-sql.el: Add support for Oracle via sqlplus
* 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 <host.com> :dbport <1521> :dbuser <username>
:database <database> :dbpassword <secret>
TINYCHANGE
-rw-r--r-- | etc/ORG-NEWS | 16 | ||||
-rw-r--r-- | lisp/ob-sql.el | 22 |
2 files changed, 37 insertions, 1 deletions
diff --git a/etc/ORG-NEWS b/etc/ORG-NEWS index 4b089eb..7225566 100644 --- a/etc/ORG-NEWS +++ b/etc/ORG-NEWS @@ -23,7 +23,8 @@ a broken internal link. See its docstring for more information. ~\vbar~ or ~\vbar{}~ will be exported unconditionnally as a =|=, unlike to existing ~\vert~, which is expanded as ~|~ when using a HTML derived export back-end. -*** Babel: support for Stan language +*** Babel +**** Support for Stan language New ob-stan.el library. Evaluating a Stan block can produce two different results. @@ -41,6 +42,19 @@ Evaluating a Stan block can produce two different results. For more information and usage examples, visit http://orgmode.org/worg/org-contrib/babel/languages/ob-doc-stan.html +**** Support for Oracle databases via ~sqlplus~ +=ob-sql= library supports running SQL blocks against an Oracle +database using ~sqlplus~. Use with properties like this (all +mandatory): + +#+BEGIN_EXAMPLE + :engine oracle + :dbhost <host.com> + :dbport <1521> + :dbuser <username> + :database <database> + :dbpassword <secret> +#+END_EXAMPLE *** New =#+latex_compiler= keyword to set LaTeX compiler. PDFLaTeX, XeLaTeX, and LuaLaTeX are supported. See the manual for details. 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) |