<title>Functional Data Manipulation Language (FDML)</title>
<partintro>
<para>
- <!-- introduction -->
+ The functional data manipulation interface provided by &clsql;
+ includes functions for inserting, updating and deleting records
+ in existing database tables and executing SQL queries and
+ statements with the results of queries returned as Lisp types.
+ SQL statements expressed as strings may be executed with the
+ <link linkend="query"><function>query</function></link> and
+ <link
+ linkend="execute-command"><function>execute-command</function></link>
+ functions. The <link
+ linkend="select"><function>select</function></link> function, on
+ the other hand, allows for the construction of queries in Lisp
+ using the symbolic SQL syntax. Finally, iterative manipulation
+ of query results is supported by <link
+ linkend="do-query"><function>do-query</function></link>, <link
+ linkend="map-query"><function>map-query</function></link> and an
+ extended clause for the <link
+ linkend="loop-tuples"><function>loop</function></link> macro.
</para>
</partintro>
-
<!-- Caching table queries -->
<refentry id="cache-table-queries-default">
<refentrytitle>*CACHE-TABLE-QUERIES-DEFAULT*</refentrytitle>
</refmeta>
<refnamediv>
- <refname><emphasis>Variable</emphasis> <emphasis role="bold">*CACHE-TABLE-QUERIES-DEFAULT*</emphasis></refname>
+ <refname>*CACHE-TABLE-QUERIES-DEFAULT*</refname>
<refpurpose>Specifies the default behaviour for caching of
attribute types.</refpurpose>
<refclass>Variable</refclass>
<refentrytitle>CACHE-TABLE-QUERIES</refentrytitle>
</refmeta>
<refnamediv>
- <refname><emphasis>Function</emphasis> <emphasis role="bold">CACHE-TABLE-QUERIES</emphasis></refname>
- <refpurpose>Controls the caching of attribute type information for a database table.</refpurpose>
+ <refname>CACHE-TABLE-QUERIES</refname>
+ <refpurpose>Control the caching of table attribute types.</refpurpose>
<refclass>Function</refclass>
</refnamediv>
<refsect1>
<title>Syntax</title>
<synopsis>
- <function>cache-table-queries</function> <replaceable>table</replaceable> &key <replaceable>action</replaceable> <replaceable>database</replaceable>) => <returnvalue></returnvalue></synopsis>
+ <function>cache-table-queries</function> <replaceable>table</replaceable> &key <replaceable>action</replaceable> <replaceable>database</replaceable> => <returnvalue></returnvalue></synopsis>
</refsect1>
<refsect1>
<title>Arguments and Values</title>
</refsect1>
<refsect1>
<title>Side Effects</title>
- <para>
+ <para>
The internal attribute cache for
<parameter>database</parameter> is modified.
- </para>
- </refsect1>
+ </para>
+ </refsect1>
<refsect1>
<title>Affected by</title>
<simplelist>
</refsect1>
</refentry>
-
- <!-- insert/update/delete records -->
-
<refentry id="insert-records">
<refmeta>
<refentrytitle>INSERT-RECORDS</refentrytitle>
</refmeta>
<refnamediv>
- <refname><emphasis>Function</emphasis> <emphasis role="bold">INSERT-RECORDS</emphasis></refname>
+ <refname>INSERT-RECORDS</refname>
<refpurpose>Insert tuples of data into a database table.</refpurpose>
<refclass>Function</refclass>
</refnamediv>
</refsect1>
<refsect1>
<title>See Also</title>
- <para>
- <simplelist>
- <member><link linkend="update-records"><function>update-records</function></link></member>
- <member><link linkend="delete-records"><function>delete-records</function></link></member>
- </simplelist>
- </para>
+ <simplelist>
+ <member><link linkend="update-records"><function>update-records</function></link></member>
+ <member><link linkend="delete-records"><function>delete-records</function></link></member>
+ </simplelist>
</refsect1>
<refsect1>
<title>Notes</title>
<refentrytitle>UPDATE-RECORDS</refentrytitle>
</refmeta>
<refnamediv>
- <refname><emphasis>Function</emphasis> <emphasis role="bold">UPDATE-RECORDS</emphasis></refname>
+ <refname>UPDATE-RECORDS</refname>
<refpurpose>Updates the values of existing records.</refpurpose>
<refclass>Function</refclass>
</refnamediv>
:from [employee]
:where [= [emplid] 1]
:field-names nil)
-=> (("Vladamir" "Lenin" "lenin@soviet.org"))
+=> (("Vladimir" "Lenin" "lenin@soviet.org"))
(update-records [employee]
:av-pairs'((first_name "Yuri")
(last_name "Gagarin")
<refentrytitle>DELETE-RECORDS</refentrytitle>
</refmeta>
<refnamediv>
- <refname><emphasis>Function</emphasis> <emphasis role="bold">DELETE-RECORDS</emphasis></refname>
+ <refname>DELETE-RECORDS</refname>
<refpurpose>Delete records from a database table.</refpurpose>
<refclass>Function</refclass>
</refnamediv>
<refentrytitle>EXECUTE-COMMAND</refentrytitle>
</refmeta>
<refnamediv>
- <refname><emphasis>Generic Function</emphasis> <emphasis role="bold">EXECUTE-COMMAND</emphasis></refname>
+ <refname>EXECUTE-COMMAND</refname>
<refpurpose>Execute an SQL command which returns no values.</refpurpose>
<refclass>Generic Function</refclass>
</refnamediv>
<refentrytitle>QUERY</refentrytitle>
</refmeta>
<refnamediv>
- <refname><emphasis>Generic Function</emphasis> <emphasis role="bold">QUERY</emphasis></refname>
+ <refname>QUERY</refname>
<refpurpose>Execute an SQL query and return the tuples as a
list.</refpurpose>
<refclass>Generic Function</refclass>
<listitem>
<para>A
<glossterm linkend="gloss-field-types">field type
- specifier</glossterm>. The default is &nil;.
+ specifier</glossterm>. The default is <symbol>:auto</symbol>;.
</para>
<para>
The purpose of this argument is cause &clsql; to
<title>Examples</title>
<screen>
(query "select emplid,first_name,last_name,height from employee where emplid = 1")
-=> ((1 "Vladamir" "Lenin" 1.5564661d0)),
+=> ((1 "Vladimir" "Lenin" 1.5564661d0)),
("emplid" "first_name" "last_name" "height")
(query "select emplid,first_name,last_name,height from employee where emplid = 1"
:field-names nil)
-=> ((1 "Vladamir" "Lenin" 1.5564661d0))
+=> ((1 "Vladimir" "Lenin" 1.5564661d0))
(query "select emplid,first_name,last_name,height from employee where emplid = 1"
:field-names nil
:result-types nil)
-=> (("1" "Vladamir" "Lenin" "1.5564661"))
+=> (("1" "Vladimir" "Lenin" "1.5564661"))
(query "select emplid,first_name,last_name,height from employee where emplid = 1"
:field-names nil
:result-types '(:int t t :double))
-=> ((1 "Vladamir" "Lenin" 1.5564661))
+=> ((1 "Vladimir" "Lenin" 1.5564661))
(query "select last_name from employee where emplid > 5" :flatp t)
=> ("Andropov" "Chernenko" "Gorbachev" "Yeltsin" "Putin"),
<refentrytitle>PRINT-QUERY</refentrytitle>
</refmeta>
<refnamediv>
- <refname><emphasis>Function</emphasis> <emphasis role="bold">PRINT-QUERY</emphasis></refname>
+ <refname>PRINT-QUERY</refname>
<refpurpose>Prints a tabular report of query results.</refpurpose>
<refclass>Function</refclass>
</refnamediv>
:where [< [emplid] 5]]
:titles '("ID" "FORENAME" "SURNAME" "EMAIL"))
ID FORENAME SURNAME EMAIL
-1 Vladamir Lenin lenin@soviet.org
+1 Vladimir Lenin lenin@soviet.org
2 Josef Stalin stalin@soviet.org
3 Leon Trotsky trotsky@soviet.org
4 Nikita Kruschev kruschev@soviet.org
7 Konstantin Chernenko chernenko@soviet.org
8 Mikhail Gorbachev gorbachev@soviet.org
9 Boris Yeltsin yeltsin@soviet.org
-10 Vladamir Putin putin@soviet.org
+10 Vladimir Putin putin@soviet.org
=>
</screen>
</refsect1>
<refentrytitle>SELECT</refentrytitle>
</refmeta>
<refnamediv>
- <refname><emphasis>Function</emphasis> <emphasis role="bold">SELECT</emphasis></refname>
+ <refname>SELECT</refname>
<refpurpose>Executes a query given the supplied constraints.</refpurpose>
<refclass>Function</refclass>
</refnamediv>
<refsect1>
<title>Syntax</title>
<synopsis>
- <function>select</function> &rest <replaceable>identifiers</replaceable> &key <replaceable>all</replaceable> <replaceable>distinct</replaceable> <replaceable>from</replaceable> <replaceable>group-by</replaceable> <replaceable>having</replaceable> <replaceable>order-by</replaceable> <replaceable>set-operation</replaceable> <replaceable>where</replaceable> <replaceable>result-types</replaceable> <replaceable>field-names</replaceable> <replaceable>flatp</replaceable> <replaceable>refresh</replaceable> <replaceable>database</replaceable> => <returnvalue>result</returnvalue></synopsis>
+ <function>select</function> &rest <replaceable>identifiers</replaceable> &key <replaceable>all</replaceable> <replaceable>distinct</replaceable> <replaceable>from</replaceable> <replaceable>group-by</replaceable> <replaceable>having</replaceable> <replaceable>limit</replaceable> <replaceable>offset</replaceable> <replaceable>order-by</replaceable> <replaceable>set-operation</replaceable> <replaceable>where</replaceable> <replaceable>result-types</replaceable> <replaceable>field-names</replaceable> <replaceable>flatp</replaceable> <replaceable>refresh</replaceable> <replaceable>caching</replaceable> <replaceable>database</replaceable> => <returnvalue>result</returnvalue></synopsis>
</refsect1>
<refsect1>
<title>Arguments and Values</title>
</para>
</listitem>
</varlistentry>
+ <varlistentry>
+ <term><parameter>limit</parameter></term>
+ <listitem>
+ <para>
+ A non-negative integer.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>offset</parameter></term>
+ <listitem>
+ <para>
+ A non-negative integer.
+ </para>
+ </listitem>
+ </varlistentry>
<varlistentry>
<term><parameter>order-by</parameter></term>
<listitem>
<listitem>
<para>A
<glossterm linkend="gloss-field-types">field type
- specifier</glossterm>. The default is &nil;.
+ specifier</glossterm>. The default is <symbol>:auto</symbol>.
</para>
<para>
The purpose of this argument is cause &clsql; to
</para>
</listitem>
</varlistentry>
+ <varlistentry>
+ <term><parameter>refresh</parameter></term>
+ <listitem>
+ <para>
+ This value is only considered when CLOS objects are being
+ selected. A boolean with a default value of &nil;. When
+ the value of the <varname>caching</varname> keyword is
+ &t;, a second equivalent <function>select</function> call
+ will return the same view class instance objects. When
+ <varname>refresh</varname> is &t;, then slots of the
+ existing instances are updated as necessary. In such
+ cases, you may wish to override the hook
+ <function>instance-refresh</function>.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>caching</parameter></term>
+ <listitem>
+ <para>
+ This value is only considered when CLOS objects are being
+ selected. A boolean with a default value of
+ <varname>*default-caching*</varname>. &clsql; caches
+ objects in accordance with the &commonsql; interface: a
+ second equivalent <function>select</function> call will
+ return the same view class instance objects.
+ </para>
+ </listitem>
+ </varlistentry>
<varlistentry>
<term><parameter>result</parameter></term>
<listitem>
in the tuple.
</para>
</listitem>
- </varlistentry>
+ </varlistentry>
</variablelist>
</refsect1>
<refsect1>
specified lisp type. The keyword arguments
<parameter>all</parameter>, <parameter>distinct</parameter>,
<parameter>from</parameter>, <parameter>group-by</parameter>,
- <parameter>having</parameter>,
- <parameter>order-by</parameter>,
+ <parameter>having</parameter>, <parameter>limit</parameter>,
+ <parameter>offset</parameter>, <parameter>order-by</parameter>,
<parameter>set-operation</parameter> and
<parameter>where</parameter> are used to specify, using the
symbolic SQL syntax, the corresponding components of the SQL
:field-names nil
:result-types nil
:order-by [first-name])
-=> ("Boris" "Josef" "Konstantin" "Leon" "Leonid" "Mikhail" "Nikita" "Vladamir"
+=> ("Boris" "Josef" "Konstantin" "Leon" "Leonid" "Mikhail" "Nikita" "Vladimir"
"Yuri")
(select [first-name] [count [*]] :from [employee]
:order-by [first-name]
:field-names nil)
=> (("Boris" "1") ("Josef" "1") ("Konstantin" "1") ("Leon" "1") ("Leonid" "1")
- ("Mikhail" "1") ("Nikita" "1") ("Vladamir" "2") ("Yuri" "1"))
+ ("Mikhail" "1") ("Nikita" "1") ("Vladimir" "2") ("Yuri" "1"))
(select [last-name] :from [employee]
:where [like [email] "%org"]
:result-types :auto)
=> (10)
-(clsql:select [avg [height]] :from [employee] :flatp t :field-names nil)
+(select [avg [height]] :from [employee] :flatp t :field-names nil)
=> (1.58999584d0)
(select [emplid] [last-name] :from [employee] :where [= [emplid] 1])
:flatp t)
=> (1 2 3 4)
-(clsql:select [emplid] :from [employee]
- :where [in [emplid] '(1 2 3 4)]
- :flatp t
- :order-by [emplid]
- :field-names nil)
+(select [emplid] :from [employee]
+ :where [in [emplid] '(1 2 3 4)]
+ :flatp t
+ :order-by [emplid]
+ :field-names nil)
=> (1 2 3 4)
+(select [emplid] :from [employee]
+ :order-by [emplid]
+ :limit 5
+ :offset 3
+ :field-names nil
+ :flatp t)
+=> (4 5 6 7 8)
+
(select [first-name] [last-name] :from [employee]
:field-names nil
:order-by '(([first-name] :asc) ([last-name] :desc)))
=> (("Boris" "Yeltsin") ("Josef" "Stalin") ("Konstantin" "Chernenko")
("Leon" "Trotsky") ("Leonid" "Brezhnev") ("Mikhail" "Gorbachev")
- ("Nikita" "Kruschev") ("Vladamir" "Putin") ("Vladamir" "Lenin")
+ ("Nikita" "Kruschev") ("Vladimir" "Putin") ("Vladimir" "Lenin")
("Yuri" "Andropov"))
(select [last-name] :from [employee]
:field-names nil)
=> ("Andropov" "Boris" "Brezhnev" "Chernenko" "Gorbachev" "Josef" "Konstantin"
"Kruschev" "Lenin" "Leon" "Leonid" "Mikhail" "Nikita" "Putin" "Stalin"
- "Trotsky" "Vladamir" "Yeltsin" "Yuri")
+ "Trotsky" "Vladimir" "Yeltsin" "Yuri")
</screen>
</refsect1>
<refsect1>
<title>Side Effects</title>
- <para>
<para>Whatever effects the execution of the SQL query has on
the underlying database, if any.</para>
- </para>
</refsect1>
<refsect1>
<title>Affected by</title>
</refsect1>
<refsect1>
<title>Notes</title>
+ <para>
+ The <function>select</function> function is actually
+ implemented in &clsql; with a single
+ <symbol>&rest</symbol> parameter (which is subsequently
+ destructured) rather than the keyword parameters presented
+ here for the purposes of exposition. This means that incorrect
+ or missing keywords or values may not trigger errors in the
+ way that they would if <function>select</function> had been
+ defined using keyword arguments.
+ </para>
<para>
The <parameter>field-names</parameter> and
<parameter>result-types</parameter> keyword arguments are a
<refentrytitle>DO-QUERY</refentrytitle>
</refmeta>
<refnamediv>
- <refname><emphasis>Macro</emphasis> <emphasis role="bold">DO-QUERY</emphasis></refname>
+ <refname>DO-QUERY</refname>
<refpurpose>Iterate over all the tuples of a query.</refpurpose>
<refclass>Macro</refclass>
</refnamediv>
</refsect1>
</refentry>
- <refentry id="for-each-row">
- <refmeta>
- <refentrytitle>FOR-EACH-ROW</refentrytitle>
- </refmeta>
- <refnamediv>
- <refname><emphasis>Function</emphasis> <emphasis role="bold">FOR-EACH-ROW</emphasis></refname>
- <refpurpose><!-- purpose --></refpurpose>
- <refclass>Function</refclass>
- </refnamediv>
- <refsect1>
- <title>Syntax</title>
- <synopsis>
- <function>for-each-row</function> &KEY FROM ORDER-BY WHERE DISTINCT LIMIT &REST FIELDS &body <replaceable>body</replaceable> => <returnvalue><!-- result --></returnvalue></synopsis>
- </refsect1>
- <refsect1>
- <title>Arguments and Values</title>
- <variablelist>
- <!-- arguments and values -->
- </variablelist>
- </refsect1>
- <refsect1>
- <title>Description</title>
- <para>
- <!-- description -->
- </para>
- </refsect1>
- <refsect1>
- <title>Examples</title>
- <screen>
- <!-- examples -->
- </screen>
- </refsect1>
- <refsect1>
- <title>Side Effects</title>
- <para>
- <!-- side effects -->
- </para>
- </refsect1>
- <refsect1>
- <title>Affected by</title>
- <para>
- <simplelist>
- <!-- affected by -->
- </simplelist>
- </para>
- </refsect1>
- <refsect1>
- <title>Exceptional Situations</title>
- <para>
- <!-- execeptional situations -->
- </para>
- </refsect1>
- <refsect1>
- <title>See Also</title>
- <simplelist>
- <member><link linkend="query"><function>query</function></link></member>
- <member><link linkend="print-query"><function>print-query</function></link></member>
- <member><link linkend="do-query"><function>do-query</function></link></member>
- <member><link linkend="map-query"><function>map-query</function></link></member>
- <member><link linkend="loop-tuples"><function>loop</function></link></member>
- <member><link linkend="select"><function>select</function></link></member>
- </simplelist>
- </refsect1>
- <refsect1>
- <title>Notes</title>
- <para>
- <!-- notes here -->
- </para>
- </refsect1>
- </refentry>
-
<refentry id="loop-tuples">
<refmeta>
<refentrytitle>LOOP</refentrytitle>
</refmeta>
<refnamediv>
- <refname><emphasis>Additional clause</emphasis> for <emphasis role="bold">LOOP</emphasis></refname>
- <refpurpose>Iterate over all the tuples of a
- query via a loop clause.</refpurpose>
+ <refname>LOOP</refname>
+ <refpurpose>Extension to Common Lisp
+ <computeroutput>Loop</computeroutput> to iterate over all the
+ tuples of a query via a loop clause.</refpurpose>
<refclass>Loop Clause</refclass>
</refnamediv>
<!-- refsect1>
:order-by [last-name]]
collect (concatenate 'string forename " " surname))
=> ("Yuri Andropov" "Leonid Brezhnev" "Konstantin Chernenko" "Mikhail Gorbachev"
- "Nikita Kruschev" "Vladamir Lenin" "Vladamir Putin" "Josef Stalin"
+ "Nikita Kruschev" "Vladimir Lenin" "Vladimir Putin" "Josef Stalin"
"Leon Trotsky" "Boris Yeltsin")
(loop for (e) being the records in
<refentrytitle>MAP-QUERY</refentrytitle>
</refmeta>
<refnamediv>
- <refname><emphasis>Function</emphasis> <emphasis role="bold">MAP-QUERY</emphasis></refname>
+ <refname>MAP-QUERY</refname>
<refpurpose>Map a function over all the tuples from a
query</refpurpose>
<refclass>Function</refclass>
[select [first-name] [last-name] :from [employee]
:order-by [last-name]])
=> (("Yuri" "Andropov") ("Leonid" "Brezhnev") ("Konstantin" "Chernenko")
- ("Mikhail" "Gorbachev") ("Nikita" "Kruschev") ("Vladamir" "Lenin")
- ("Vladamir" "Putin") ("Josef" "Stalin") ("Leon" "Trotsky")
+ ("Mikhail" "Gorbachev") ("Nikita" "Kruschev") ("Vladimir" "Lenin")
+ ("Vladimir" "Putin") ("Josef" "Stalin") ("Leon" "Trotsky")
("Boris" "Yeltsin"))
(map-query 'list #'last-name [select 'employee :order-by [emplid]])
</refsect1>
</refentry>
-
- <!-- prepared statements -->
-
- <refentry id="prepare-sql">
- <refmeta>
- <refentrytitle>PREPARE-SQL</refentrytitle>
- </refmeta>
- <refnamediv>
- <refname><emphasis>Function</emphasis> <emphasis role="bold">PREPARE-SQL</emphasis></refname>
- <refpurpose>Create a prepared statement.</refpurpose>
- <refclass>Function</refclass>
- </refnamediv>
- <refsect1>
- <title>Syntax</title>
- <synopsis>
- <function>prepare-sql</function> <replaceable>sql-stmt types</replaceable> &key <replaceable>database</replaceable> <replaceable>result-types</replaceable> <replaceable>field-names</replaceable> => <returnvalue>result</returnvalue></synopsis>
- </refsect1>
- <refsect1>
- <title>Arguments and Values</title>
- <variablelist>
- <!-- arguments and values -->
- </variablelist>
- </refsect1>
- <refsect1>
- <title>Description</title>
- <para>Prepares a SQL statement <parameter>sql-stmt</parameter>
- for execution. <parameter>types</parameter> contains a list of
- types corresponding to the input parameters. Returns a
- prepared-statement object.
-
- A type can be
- :int
- :double
- :null
- (:string n)
-
- </para>
- </refsect1>
- <refsect1>
- <title>Examples</title>
- <screen>
- <!-- examples -->
- </screen>
- </refsect1>
- <refsect1>
- <title>Side Effects</title>
- <para>
- <!-- side effects -->
- </para>
- </refsect1>
- <refsect1>
- <title>Affected by</title>
- <para>
- <simplelist>
- <!-- affected by -->
- </simplelist>
- </para>
- </refsect1>
- <refsect1>
- <title>Exceptional Situations</title>
- <para>
- <!-- execeptional situations -->
- </para>
- </refsect1>
- <refsect1>
- <title>See Also</title>
- <para>
- <simplelist>
- <!-- see also -->
- </simplelist>
- </para>
- </refsect1>
- <refsect1>
- <title>Notes</title>
- <para>
- <!-- notes -->
- </para>
- </refsect1>
- </refentry>
-
- <refentry id="run-prepared-sql">
- <refmeta>
- <refentrytitle>RUN-PREPARED-SQL</refentrytitle>
- </refmeta>
- <refnamediv>
- <refname><emphasis>Function</emphasis> <emphasis role="bold">RUN-PREPARED-SQL</emphasis></refname>
- <refpurpose>Execute a prepared statement.</refpurpose>
- <refclass>Function</refclass>
- </refnamediv>
- <refsect1>
- <title>Syntax</title>
- <synopsis>
- <function>run-prepared-sql</function> <replaceable>prepared-stmt</replaceable> => <returnvalue><!-- result --></returnvalue></synopsis>
- </refsect1>
- <refsect1>
- <title>Arguments and Values</title>
- <variablelist>
- <!-- arguments and values -->
- </variablelist>
- </refsect1>
- <refsect1>
- <title>Description</title>
- <para>Execute the prepared sql statment. All input
- parameters must be bound.
- </para>
- </refsect1>
- <refsect1>
- <title>Examples</title>
- <screen>
- <!-- examples -->
- </screen>
- </refsect1>
- <refsect1>
- <title>Side Effects</title>
- <para>
- <!-- side effects -->
- </para>
- </refsect1>
- <refsect1>
- <title>Affected by</title>
- <para>
- <simplelist>
- <!-- affected by -->
- </simplelist>
- </para>
- </refsect1>
- <refsect1>
- <title>Exceptional Situations</title>
- <para>
- <!-- execeptional situations -->
- </para>
- </refsect1>
- <refsect1>
- <title>See Also</title>
- <para>
- <simplelist>
- <!-- see also -->
- </simplelist>
- </para>
- </refsect1>
- <refsect1>
- <title>Notes</title>
- <para>
- <!-- notes -->
- </para>
- </refsect1>
- </refentry>
-
- <refentry id="free-prepared-sql">
- <refmeta>
- <refentrytitle>FREE-PREPARED-SQL</refentrytitle>
- </refmeta>
- <refnamediv>
- <refname><emphasis>Function</emphasis> <emphasis role="bold">FREE-PREPARED-SQL</emphasis></refname>
- <refpurpose>Delete a prepared statement object.</refpurpose>
- <refclass>Function</refclass>
- </refnamediv>
- <refsect1>
- <title>Syntax</title>
- <synopsis>
- <function>free-prepared-sql</function> <replaceable>prepared-stmt</replaceable> => <returnvalue><!-- result --></returnvalue></synopsis>
- </refsect1>
- <refsect1>
- <title>Arguments and Values</title>
- <variablelist>
- <!-- arguments and values -->
- </variablelist>
- </refsect1>
- <refsect1>
- <title>Description</title>
- <para>Delete the objects associated with a prepared
- statement.
- </para>
- </refsect1>
- <refsect1>
- <title>Examples</title>
- <screen>
- <!-- examples -->
- </screen>
- </refsect1>
- <refsect1>
- <title>Side Effects</title>
- <para>
- <!-- side effects -->
- </para>
- </refsect1>
- <refsect1>
- <title>Affected by</title>
- <para>
- <simplelist>
- <!-- affected by -->
- </simplelist>
- </para>
- </refsect1>
- <refsect1>
- <title>Exceptional Situations</title>
- <para>
- <!-- execeptional situations -->
- </para>
- </refsect1>
- <refsect1>
- <title>See Also</title>
- <para>
- <simplelist>
- <!-- see also -->
- </simplelist>
- </para>
- </refsect1>
- <refsect1>
- <title>Notes</title>
- <para>
- <!-- notes -->
- </para>
- </refsect1>
- </refentry>
-
- <refentry id="bind-parameter">
- <refmeta>
- <refentrytitle>BIND-PARAMETER</refentrytitle>
- </refmeta>
- <refnamediv>
- <refname><emphasis>Function</emphasis> <emphasis role="bold">BIND-PARAMETER</emphasis></refname>
- <refpurpose>Bind a parameter in a prepared statement.</refpurpose>
- <refclass>Function</refclass>
- </refnamediv>
- <refsect1>
- <title>Syntax</title>
- <synopsis>
- <function>bind-parameter</function> <replaceable>prepared-stmt</replaceable> <replaceable>position</replaceable> <replaceable>value</replaceable> => <returnvalue><!-- result --></returnvalue></synopsis>
- </refsect1>
- <refsect1>
- <title>Arguments and Values</title>
- <variablelist>
- <!-- arguments and values -->
- </variablelist>
- </refsect1>
- <refsect1>
- <title>Description</title>
- <para>Sets the value of a parameter in a prepared statement.
- </para>
- </refsect1>
- <refsect1>
- <title>Examples</title>
- <screen>
- <!-- examples -->
- </screen>
- </refsect1>
- <refsect1>
- <title>Side Effects</title>
- <para>
- <!-- side effects -->
- </para>
- </refsect1>
- <refsect1>
- <title>Affected by</title>
- <para>
- <simplelist>
- <!-- affected by -->
- </simplelist>
- </para>
- </refsect1>
- <refsect1>
- <title>Exceptional Situations</title>
- <para>
- <!-- execeptional situations -->
- </para>
- </refsect1>
- <refsect1>
- <title>See Also</title>
- <para>
- <simplelist>
- <!-- see also -->
- </simplelist>
- </para>
- </refsect1>
- <refsect1>
- <title>Notes</title>
- <para>
- <!-- notes -->
- </para>
- </refsect1>
- </refentry>
-
</reference>
+