Execute code with a variable bound to a prepared-statement and destroys it afterwards.
sql
with-prepared-statement (ps-var sql-exp &key database variable-types count flatp result-types) &body body => results*
| ps-var⇩ |
A symbol. |
| sql-exp⇩ |
An SQL expression. |
| database⇩ |
A database or nil. |
| variable-types⇩ |
A list. |
| count⇩ |
A non-negative integer or nil. |
| flatp⇩ |
A boolean. |
| result-types⇩ |
A list of symbols. |
| body⇩ |
Lisp forms. |
| results* |
The results of executing body. |
The macro with-prepared-statement binds ps-var to a new prepared-statement, executes the forms of body, destroys the prepared-statement, and returns the values that body returns.
The prepared-statement is created by calling prepare-statement, passing it sql-exp and any of database, variable-types, count, flatp and result-types that are supplied.
The following code shows insertion of multiple records using a prepared statement.
(progn
(when (sql:table-exists-p "a_table_of_squares")
(sql:drop-table "a_table_of_squares"))
(sql:execute-command "create table a_table_of_squares (num integer, square_of_num integer)")
(sql:with-prepared-statement (ps "insert into a_table_of_squares values (:1, :2)")
(dotimes (x 10)
(sql:prepared-statement-set-and-execute ps x (* x x))))
;; check it
(pprint (sql:query "select * from a_table_of_squares")))
prepare-statement
prepared-statement-set-and-execute
set-prepared-statement-variables
execute-command
query
LispWorks® User Guide and Reference Manual - 01 Dec 2021 19:30:56