Repeatedly binds a variable to the results of a query, optionally binds another variable to the column names, and executes a body of code within the scope of these bindings.
simple-do-query ( values-list query &key names-list database not-inside-transaction get-all ) &body body =>
A variable.
A database query.
A variable, or
nil
.
A database.
A generalized boolean.
A Lisp code body.
The macro
simple-do-query
repeatedly executes
body
within a binding of
values-list
to the attributes of each record resulting from
query
.
If a variable
names-list
is supplied, then it is bound to a list of the column names for the query during the execution of
body
. The default value of
names-list
is
nil
.
simple-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 Special considerations for iteration functions and macros for details.
(sql:simple-do-query
(person-details [select [Surname][ID] :from [person]]
:names-list xx)
(format t "~&~A: ~A, ~A: ~A~%"
(first xx)
(first person-details)
(second xx)
(second person-details)))
=>
SURNAME: Brown, ID: 2
SURNAME: Jones, ID: 3
SURNAME: Smith, ID: 4