Prepares a SQL statement for execution, returning a function which can be called with parameters to execute the statement, returning no result.
prepared-statement($connection as javatype:java.sql.Connection, $statement as xs:string) ➔ function(*)
A JDBC database connection established using sql:connect
A SQL statement, typically containing question marks as place-holders for parameters
Implemented since Saxon 9.9. Requires Saxon-PE or Saxon-EE. Available for Java only.
The function prepares a SQL statement for execution. The statement will typically be one that does not return
a result, but which uses question marks as place-holders for parameters, for example
INSERT INTO EMP
VALUES (?, ?, ?). A call on
sql:prepared-statement returns a function which can be
called with parameters to execute the statement.
The arity of the returned function (the "invocation function") is equal to the number of question-marks appearing in the source statement.
The invocation function expects the supplied arguments to be atomic values. The data types of the arguments
should correspond to the types of the values expected by the SQL statement: for example,
xs:decimal for a SQL decimal, and so on.
The invocation function always returns an empty sequence, though to avoid over-aggressive optimization, it is
declared as returning
item()?. Because the invocation function is called for its side-effects,
it is recommended to call it in the
action expression of a saxon:do instruction.
Example:<xsl:variable name="add-book" as="function(*)" select="sql:prepared-statement($connection, 'INSERT INTO book (isbn, title, author, category) VALUES (?, ?, ?, ?)')"/> <xsl:for-each select="//book"> <saxon:do action="$add-book(@isbn, @title, @author, @category)"/> </xsl:for-each>