Set the values of the variables in a prepared-statement and execute or query it.
sql
prepared-statement-set-and-execute prepared-statement &rest values
prepared-statement-set-and-execute* prepared-statement values &key database
prepared-statement-set-and-query prepared-statement &rest values => result-list, field-names
prepared-statement-set-and-query* prepared-statement values &key database => result-list, field-names
| prepared-statement⇩ | |
| values⇩ | 
A list. | 
| database⇩ | 
A database or  nil. | 
| result-list, field-names | |
| 
The results of query. | |
The functions prepared-statement-set-and-execute, prepared-statement-set-and-execute*, prepared-statement-set-and-query and prepared-statement-set-and-query* set the variables of a prepared-statement and then execute or query using it. They first call set-prepared-statement-variables, passing it prepared-statement and values, and for prepared-statement-set-and-execute* and prepared-statement-set-and-query* also database, and then call either execute-command (prepared-statement-set-and-execute and prepared-statement-set-and-execute*) or query (prepared-statement-set-and-query and prepared-statement-set-and-query*). The latter two return the result of the call to query.
The following code shows insertion of multiple records using a prepared statement and prepared-statement-set-and-execute.
(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
set-prepared-statement-variables
with-prepared-statement
execute-command
query
LispWorks® User Guide and Reference Manual - 18 Feb 2025 15:32:41