Repeatedly binds a set of variables to the results of a query, and executes a body of code using the bound variables.
sql
do-query ((&rest args) query &key database not-inside-transaction get-all) &body body
args⇩ |
A set of variables. |
query⇩ |
A database query or a prepared-statement containing a query. |
database⇩ |
A database. |
not-inside-transaction⇩ | |
A generalized boolean. | |
get-all⇩ |
A generalized boolean. |
body⇩ |
A Lisp code body. |
The macro do-query
repeatedly executes body within a binding of args on the attributes of each record resulting from query. do-query
returns no values.
The default value of database is *default-database*.
not-inside-transaction and get-all may be useful when fetching many records through a connection with database-type :mysql
. Both of these arguments have default value nil
. See the section 23.9.6 Special considerations for iteration functions and macros for details.
The following code repeatedly binds the result of selecting an entry in ename
from the table emp
to the variable name
, and then prints name
using the Lisp function print.
(do-query ((name) [select [ename] :from [emp]]) (print name))
Loop Extensions in Common SQL
map-query
prepare-statement
query
select
simple-do-query
LispWorks® User Guide and Reference Manual - 01 Dec 2021 19:30:56