ob-sql: added variable handling

* lisp/ob-sql.el (org-babel-expand-body:sql): Expand the body of a sql
  code block.
  (org-babel-execute:sql): Use sql specific body expansion function.
  (org-babel-sql-expand-vars): Insert variables into a sql code block.

* lisp/ob-sqlite.el (org-babel-execute:sqlite): Remove unused variable
  declaration.
This commit is contained in:
Eric Schulte 2010-11-30 19:32:01 -07:00
parent c4418fc472
commit beab6b4bfe
2 changed files with 28 additions and 2 deletions

View File

@ -50,6 +50,11 @@
(defvar org-babel-default-header-args:sql '())
(defun org-babel-expand-body:sql (body params)
"Expand BODY according to the values of PARAMS."
(org-babel-sql-expand-vars
body (mapcar #'cdr (org-babel-get-header params :var))))
(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'."
@ -70,7 +75,7 @@ This function is called by `org-babel-execute-src-block'."
(or cmdline "")))
(t (error "no support for the %s sql engine" engine)))))
(with-temp-file in-file
(insert (org-babel-expand-body:generic body params)))
(insert (org-babel-expand-body:sql body params)))
(message command)
(shell-command command)
(with-temp-buffer
@ -82,6 +87,28 @@ This function is called by `org-babel-execute-src-block'."
(org-babel-pick-name (cdr (assoc :rowname-names params))
(cdr (assoc :rownames params)))))))
(defun org-babel-sql-expand-vars (body vars)
"Expand the variables held in VARS in BODY."
(mapc
(lambda (pair)
(setq body
(replace-regexp-in-string
(format "\$%s" (car pair))
((lambda (val)
(if (listp val)
((lambda (data-file)
(with-temp-file data-file
(insert (orgtbl-to-csv
val '(:fmt (lambda (el) (if (stringp el)
el
(format "%S" el)))))))
data-file)
(org-babel-temp-file "sql-data-"))
(if (stringp val) val (format "%S" val))))
(cdr pair))
body)))
vars)
body)
(defun org-babel-prep-session:sql (session params)
"Raise an error because Sql sessions aren't implemented."

View File

@ -53,7 +53,6 @@
"Execute a block of Sqlite code with Babel.
This function is called by `org-babel-execute-src-block'."
(let ((result-params (split-string (or (cdr (assoc :results params)) "")))
(vars (org-babel-get-header params :var))
(db (cdr (assoc :db params)))
(separator (cdr (assoc :separator params)))
(nullvalue (cdr (assoc :nullvalue params)))