php-doc-en/functions/uodbc.xml
Andreas Karajannis 1f98ded65f Fixed return type for odbc_do()
git-svn-id: https://svn.php.net/repository/phpdoc/en/trunk@27328 c90b9560-bf6c-de11-be94-00142212c4b1
2000-06-29 07:15:33 +00:00

1610 lines
56 KiB
XML

<reference id="ref.odbc">
<title>ODBC functions</title>
<titleabbrev>ODBC</titleabbrev>
<refentry id="function.odbc-autocommit">
<refnamediv>
<refname>odbc_autocommit</refname>
<refpurpose>Toggle autocommit behaviour</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcprototype>
<funcdef>int <function>odbc_autocommit</function></funcdef>
<paramdef>int <parameter>connection_id</parameter></paramdef>
<paramdef>int <parameter><optional>OnOff</optional></parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
Without the <parameter>OnOff</parameter> parameter, this function
returns auto-commit status for
<parameter>connection_id</parameter>. True is returned if
auto-commit is on, false if it is off or an error occurs.
</para>
<para>
If <parameter>OnOff</parameter> is true, auto-commit is enabled,
if it is false auto-commit is disabled. Returns
<literal>true</literal> on success, <literal>false</literal> on
failure.
</para>
<para>
By default, auto-commit is on for a connection. Disabling
auto-commit is equivalent with starting a transaction.
</para>
<simpara>
See also
<function>odbc_commit</function> and
<function>odbc_rollback</function>.
</simpara>
</refsect1>
</refentry>
<refentry id="function.odbc-binmode">
<refnamediv>
<refname>odbc_binmode</refname>
<refpurpose>handling of binary column data</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcprototype>
<funcdef>int <function>odbc_binmode</function></funcdef>
<paramdef>int <parameter>result_id</parameter></paramdef>
<paramdef>int <parameter>mode</parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
(ODBC SQL types affected: BINARY, VARBINARY, LONGVARBINARY)
</para>
<itemizedlist>
<listitem>
<simpara>
ODBC_BINMODE_PASSTHRU: Passthru BINARY data
</simpara>
</listitem>
<listitem>
<simpara>
ODBC_BINMODE_RETURN: Return as is
</simpara>
</listitem>
<listitem>
<simpara>
ODBC_BINMODE_CONVERT: Convert to char and return
</simpara>
</listitem>
</itemizedlist>
<para>
When binary SQL data is converted to character C data, each byte
(8 bits) of source data is represented as two ASCII characters.
These characters are the ASCII character representation of the
number in its hexadecimal form. For example, a binary 00000001 is
converted to <literal>"01"</literal> and a binary 11111111 is
converted to <literal>"FF"</literal>.
<table>
<title>LONGVARBINARY handling</title>
<tgroup cols="3">
<thead>
<row>
<entry>binmode</entry>
<entry>longreadlen</entry>
<entry>result</entry>
</row>
</thead>
<tbody>
<row>
<entry>ODBC_BINMODE_PASSTHRU</entry>
<entry>0</entry>
<entry>passthru</entry>
</row>
<row>
<entry>ODBC_BINMODE_RETURN</entry>
<entry>0</entry>
<entry>passthru</entry>
</row>
<row>
<entry>ODBC_BINMODE_CONVERT</entry>
<entry>0</entry>
<entry>passthru</entry>
</row>
<row>
<entry>ODBC_BINMODE_PASSTHRU</entry>
<entry>0</entry>
<entry>passthru</entry>
</row>
<row>
<entry>ODBC_BINMODE_PASSTHRU</entry>
<entry>>0</entry>
<entry>passthru</entry>
</row>
<row>
<entry>ODBC_BINMODE_RETURN</entry>
<entry>>0</entry>
<entry>return as is</entry>
</row>
<row>
<entry>ODBC_BINMODE_CONVERT</entry>
<entry>>0</entry>
<entry>return as char</entry>
</row>
</tbody>
</tgroup>
</table>
</para>
<para>
If <function>odbc_fetch_into</function> is used, passthru means
that an empty string is returned for these columns.
</para>
<para>
If <parameter>result_id</parameter> is <literal>0</literal>, the
settings apply as default for new results.
<note>
<simpara>
Default for longreadlen is <literal>4096</literal> and binmode
defaults to <literal>ODBC_BINMODE_RETURN</literal>. Handling
of binary long columns is also affected by
<function>odbc_longreadlen</function>
</simpara>
</note>
</para>
</refsect1>
</refentry>
<refentry id="function.odbc-close">
<refnamediv>
<refname>odbc_close</refname>
<refpurpose>Close an ODBC connection</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcprototype>
<funcdef>void <function>odbc_close</function></funcdef>
<paramdef>int <parameter>connection_id</parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
<function>odbc_close</function> will close down the connection to
the database server associated with the given connection
identifier.
<note>
<simpara>
This function will fail if there are open transactions on this
connection. The connection will remain open in this case.
</simpara>
</note>
</para>
</refsect1>
</refentry>
<refentry id="function.odbc-close-all">
<refnamediv>
<refname>odbc_close_all</refname>
<refpurpose>Close all ODBC connections</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcprototype>
<funcdef>void <function>odbc_close_all</function></funcdef>
<void/>
</funcprototype>
</funcsynopsis>
<para>
<function>odbc_close_all</function> will close down all
connections to database server(s).
<note>
<simpara>
This function will fail if there are open transactions on a
connection. This connection will remain open in this case.
</simpara>
</note>
</para>
</refsect1>
</refentry>
<refentry id="function.odbc-commit">
<refnamediv>
<refname>odbc_commit</refname>
<refpurpose>Commit an ODBC transaction</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcprototype>
<funcdef>int <function>odbc_commit</function></funcdef>
<paramdef>int <parameter>connection_id</parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
Returns: <literal>true</literal> on success,
<literal>false</literal> on failure. All pending transactions on
<parameter>connection_id</parameter> are committed.
</para>
</refsect1>
</refentry>
<refentry id="function.odbc-connect">
<refnamediv>
<refname>odbc_connect</refname>
<refpurpose>Connect to a datasource</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcprototype>
<funcdef>int <function>odbc_connect</function></funcdef>
<paramdef>string <parameter>dsn</parameter></paramdef>
<paramdef>string <parameter>user</parameter></paramdef>
<paramdef>string <parameter>password</parameter></paramdef>
<paramdef>int <parameter><optional>cursor_type</optional></parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
Returns an ODBC connection id or 0 (<literal>false</literal>) on
error.
</para>
<simpara>
The connection id returned by this functions is needed by other
ODBC functions. You can have multiple connections open at once.
The optional fourth parameter sets the type of cursor to be used
for this connection. This parameter is not normally needed, but
can be useful for working around problems with some ODBC drivers.
</simpara>
<simpara>
With some ODBC drivers, executing a complex stored procedure may
fail with an error similar to: "Cannot open a cursor on a stored
procedure that has anything other than a single select statement
in it". Using SQL_CUR_USE_ODBC may avoid that error. Also, some
drivers don't support the optional row_number parameter in
<function>odbc_fetch_row</function>. SQL_CUR_USE_ODBC might help
in that case, too.
</simpara>
<simpara>
The following constants are defined for cursortype:
</simpara>
<para>
<itemizedlist>
<listitem>
<simpara>
SQL_CUR_USE_IF_NEEDED
</simpara>
</listitem>
<listitem>
<simpara>
SQL_CUR_USE_ODBC
</simpara>
</listitem>
<listitem>
<simpara>
SQL_CUR_USE_DRIVER
</simpara>
</listitem>
<listitem>
<simpara>
SQL_CUR_DEFAULT
</simpara></listitem>
</itemizedlist>
</para>
<simpara>
For persistent connections see
<function>odbc_pconnect</function>.
</simpara>
</refsect1>
</refentry>
<refentry id="function.odbc-cursor">
<refnamediv>
<refname>odbc_cursor</refname>
<refpurpose>Get cursorname</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcprototype>
<funcdef>string <function>odbc_cursor</function></funcdef>
<paramdef>int <parameter>result_id</parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
odbc_cursor will return a cursorname for the given result_id.
</para>
</refsect1>
</refentry>
<refentry id="function.odbc-do">
<refnamediv>
<refname>odbc_do</refname>
<refpurpose>Synonym for <function>odbc_exec</function></refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcprototype>
<funcdef>int <function>odbc_do</function></funcdef>
<paramdef>int <parameter>conn_id</parameter></paramdef>
<paramdef>string <parameter>query</parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
<function>Odbc_do</function> will execute a query on the given
connection.
</para>
</refsect1>
</refentry>
<refentry id="function.odbc-exec">
<refnamediv>
<refname>odbc_exec</refname>
<refpurpose>Prepare and execute a SQL statement</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcprototype>
<funcdef>int <function>odbc_exec</function></funcdef>
<paramdef>int <parameter>connection_id</parameter></paramdef>
<paramdef>string <parameter>query_string</parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
Returns <literal>false</literal> on error. Returns an ODBC
result identifier if the SQL command was executed successfully.
</para>
<para>
<function>odbc_exec</function> will send an SQL statement to the
database server specified by
<parameter>connection_id</parameter>. This parameter must be a
valid identifier returned by <function>odbc_connect</function> or
<function>odbc_pconnect</function>.
</para>
<simpara>
See also: <function>odbc_prepare</function> and
<function>odbc_execute</function> for multiple execution of SQL
statements.
</simpara>
</refsect1>
</refentry>
<refentry id="function.odbc-execute">
<refnamediv>
<refname>odbc_execute</refname>
<refpurpose>Execute a prepared statement</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcprototype>
<funcdef>int <function>odbc_execute</function></funcdef>
<paramdef>int <parameter>result_id</parameter></paramdef>
<paramdef>array
<parameter><optional>parameters_array</optional></parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
Executes a statement prepared with
<function>odbc_prepare</function>. Returns
<literal>true</literal> on successful execution,
<literal>false</literal> otherwise. The array
<parameter>arameters_array</parameter> only needs to
be given if you really have parameters in your statement.
</para>
</refsect1>
</refentry>
<refentry id="function.odbc-fetch-into">
<refnamediv>
<refname>odbc_fetch_into</refname>
<refpurpose>Fetch one result row into array</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcprototype>
<funcdef>int <function>odbc_fetch_into</function></funcdef>
<paramdef>int <parameter>result_id</parameter></paramdef>
<paramdef>int <parameter><optional>rownumber</optional></parameter></paramdef>
<paramdef>array <parameter>result_array</parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
Returns the number of columns in the result;
<literal>false</literal> on error.
<parameter>result_array</parameter> must be passed by reference,
but it can be of any type since it will be converted to type
array. The array will contain the column values starting at array
index 0.
</para>
</refsect1>
</refentry>
<refentry id="function.odbc-fetch-row">
<refnamediv>
<refname>odbc_fetch_row</refname>
<refpurpose>Fetch a row</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcprototype>
<funcdef>int <function>odbc_fetch_row</function></funcdef>
<paramdef>int <parameter>result_id</parameter></paramdef>
<paramdef>int <parameter><optional>row_number</optional></parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
If <function>odbc_fetch_row</function> was succesful (there was a
row), <literal>true</literal> is returned. If there are no more
rows, <literal>false</literal> is returned.
</para>
<para>
<function>odbc_fetch_row</function> fetches a row of the data
that was returned by <function>odbc_do</function> /
<function>odbc_exec</function>. After
<function>odbc_fetch_row</function> is called, the fields of that
row can be accessed with <function>odbc_result</function>.
</para>
<para>
If <parameter>row_number</parameter> is not specified,
<function>odbc_fetch_row</function> will try to fetch the next
row in the result set. Calls to
<function>odbc_fetch_row</function> with and without
<parameter>row_number</parameter> can be mixed.
</para>
<para>
To step through the result more than once, you can call
<function>odbc_fetch_row</function> with
<parameter>row_number</parameter> 1, and then continue doing
<function>odbc_fetch_row</function> without
<parameter>row_number</parameter> to review the result. If a
driver doesn't support fetching rows by number, the
<parameter>row_number</parameter> parameter is ignored.
</para>
</refsect1>
</refentry>
<refentry id="function.odbc-field-name">
<refnamediv>
<refname>odbc_field_name</refname>
<refpurpose>Get the columnname</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcprototype>
<funcdef>string <function>odbc_field_name</function></funcdef>
<paramdef>int <parameter>result_id</parameter></paramdef>
<paramdef>int <parameter>field_number</parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
<function>odbc_field_name</function> will return the name of the
field occupying the given column number in the given ODBC result
identifier. Field numbering starts at 1.
<literal>false</literal> is returned on error.
</para>
</refsect1>
</refentry>
<refentry id="function.odbc-field-num">
<refnamediv>
<refname>odbc_field_num</refname>
<refpurpose>Return column number</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcprototype>
<funcdef>int <function>odbc_field_num</function></funcdef>
<paramdef>int <parameter>result_id</parameter></paramdef>
<paramdef>string <parameter>field_name</parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
<function>odbc_field_num</function> will return the number of the
column slot that corresponds to the named field in the given ODBC
result identifier. Field numbering starts at 1.
<literal>false</literal> is returned on error.
</para>
</refsect1>
</refentry>
<refentry id="function.odbc-field-type">
<refnamediv>
<refname>odbc_field_type</refname>
<refpurpose>Datatype of a field</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcprototype>
<funcdef>string <function>odbc_field_type</function></funcdef>
<paramdef>int <parameter>result_id</parameter></paramdef>
<paramdef>int <parameter>field_number</parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
<function>odbc_field_type</function> will return the SQL type of
the field referecend by number in the given ODBC result
identifier. Field numbering starts at 1.
</para>
</refsect1>
</refentry>
<refentry id="function.odbc-field-len">
<refnamediv>
<refname>odbc_field_len</refname>
<refpurpose>Get the length (precision) of a field</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcprototype>
<funcdef>int <function>odbc_field_len</function></funcdef>
<paramdef>int <parameter>result_id</parameter></paramdef>
<paramdef>int <parameter>field_number</parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
<function>odbc_field_len</function> will return the length of
the field referecend by number in the given ODBC result
identifier. Field numbering starts at 1.
</para>
<simpara>
See also: <function>odbc_field_scale</function> to get the scale of a
floating point number.
</simpara>
</refsect1>
</refentry>
<refentry id="function.odbc-field-precision">
<refnamediv>
<refname>odbc_field_precision</refname>
<refpurpose>Synonym for <function>odbc_field_len</function></refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcprototype>
<funcdef>string <function>odbc_field_precision</function></funcdef>
<paramdef>int <parameter>result_id</parameter></paramdef>
<paramdef>int <parameter>field_number</parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
<function>odbc_field_precision</function> will return the precision
of the field referecend by number in the given ODBC result
identifier.
</para>
<para>
See also: <function>odbc_field_scale</function> to get the scale of a
floating point number.
</para>
</refsect1>
</refentry>
<refentry id="function.odbc-field-scale">
<refnamediv>
<refname>odbc_field_scale</refname>
<refpurpose>Get the scale of a field</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcprototype>
<funcdef>string <function>odbc_field_scale</function></funcdef>
<paramdef>int <parameter>result_id</parameter></paramdef>
<paramdef>int <parameter>field_number</parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
<function>odbc_field_precision</function> will return the scale
of the field referecend by number in the given ODBC result
identifier.
</para>
</refsect1>
</refentry>
<refentry id="function.odbc-free-result">
<refnamediv>
<refname>odbc_free_result</refname>
<refpurpose>Free resources associated with a result</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcprototype>
<funcdef>int <function>odbc_free_result</function></funcdef>
<paramdef>int <parameter>result_id</parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
Always returns <literal>true</literal>.
</para>
<para>
<function>odbc_free_result</function> only needs to be called if
you are worried about using too much memory while your script is
running. All result memory will automatically be freed when the
script is finished. But, if you are sure you are not going to
need the result data anymore in a script, you may call
<function>odbc_free_result</function>, and the memory associated
with <parameter>result_id</parameter> will be freed.
</para>
<para>
<note>
<simpara>
If auto-commit is disabled (see
<function>odbc_autocommit</function>) and you call
<function>odbc_free_result</function> before commiting, all
pending transactions are rolled back.
</simpara>
</note>
</para>
</refsect1>
</refentry>
<refentry id="function.odbc-longreadlen">
<refnamediv>
<refname>odbc_longreadlen</refname>
<refpurpose>Handling of LONG columns</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcprototype>
<funcdef>int <function>odbc_longreadlen</function></funcdef>
<paramdef>int <parameter>result_id</parameter></paramdef>
<paramdef>int <parameter>length</parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
(ODBC SQL types affected: LONG, LONGVARBINARY) The number of
bytes returned to PHP is controled by the parameter length. If it
is set to 0, Long column data is passed thru to the
client.
</para>
<note>
<simpara>
Handling of LONGVARBINARY columns is also affected by
<function>odbc_binmode</function>.
</simpara>
</note>
</refsect1>
</refentry>
<refentry id="function.odbc-num-fields">
<refnamediv>
<refname>odbc_num_fields</refname>
<refpurpose>Number of columns in a result</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcprototype>
<funcdef>int <function>odbc_num_fields</function></funcdef>
<paramdef>int <parameter>result_id</parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
<function>Odbc_num_fields</function> will return the number of
fields (columns) in an ODBC result. This function will return -1
on error. The argument is a valid result identifier returned by
<function>odbc_exec</function>.
</para>
</refsect1>
</refentry>
<refentry id="function.odbc-pconnect">
<refnamediv>
<refname>odbc_pconnect</refname>
<refpurpose>Open a persistent database connection</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcprototype>
<funcdef>int <function>odbc_pconnect</function></funcdef>
<paramdef>string <parameter>dsn</parameter></paramdef>
<paramdef>string <parameter>user</parameter></paramdef>
<paramdef>string <parameter>password</parameter></paramdef>
<paramdef>int <parameter><optional>cursor_type</optional></parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
Returns an ODBC connection id or 0 (<literal>false</literal>) on
error. This function is much like
<function>odbc_connect</function>, except that the connection is
not really closed when the script has finished. Future requests
for a connection with the same <parameter>dsn</parameter>,
<parameter>user</parameter>, <parameter>password</parameter>
combination (via <function>odbc_connect</function> and
<function>odbc_pconnect</function>) can reuse the persistent
connection.
</para>
<para>
<note>
<simpara>
Persistent connections have no effect if PHP is used as a CGI
program.
</simpara>
</note>
</para>
<para>
For information about the optional cursor_type parameter see the
<function>odbc_connect</function> function. For more information
on persistent connections, refer to the PHP FAQ.
</para>
</refsect1>
</refentry>
<refentry id="function.odbc-prepare">
<refnamediv>
<refname>odbc_prepare</refname>
<refpurpose>Prepares a statement for execution</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcprototype>
<funcdef>int <function>odbc_prepare</function></funcdef>
<paramdef>int <parameter>connection_id</parameter></paramdef>
<paramdef>string <parameter>query_string</parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
Returns <literal>false</literal> on error.
</para>
<para>
Returns an ODBC result identifier if the SQL command was prepared
successfully. The result identifier can be used later to execute
the statement with <function>odbc_execute</function>.
</para>
</refsect1>
</refentry>
<refentry id="function.odbc-num-rows">
<refnamediv>
<refname>odbc_num_rows</refname>
<refpurpose>Number of rows in a result</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcprototype>
<funcdef>int <function>odbc_num_rows</function></funcdef>
<paramdef>int <parameter>result_id</parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
<function>odbc_num_rows</function> will return the number of rows
in an ODBC result. This function will return -1 on error. For
INSERT, UPDATE and DELETE statements
<function>odbc_num_rows</function> returns the number of rows
affected. For a SELECT clause this <literal>can</literal> be
the number of rows available.
</para>
<para>
Note: Using <function>odbc_num_rows</function> to determine the
number of rows available after a SELECT will return -1 with many
drivers.
</para>
</refsect1>
</refentry>
<refentry id="function.odbc-result">
<refnamediv>
<refname>odbc_result</refname>
<refpurpose>Get result data</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcprototype>
<funcdef>string <function>odbc_result</function></funcdef>
<paramdef>int <parameter>result_id</parameter></paramdef>
<paramdef>mixed <parameter>field</parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
Returns the contents of the field.
</para>
<para>
<parameter>field</parameter> can either be an integer containing
the column number of the field you want; or it can be a string
containing the name of the field. For example:
<informalexample><programlisting>
$item_3 = odbc_result ($Query_ID, 3);
$item_val = odbc_result ($Query_ID, "val");
</programlisting>
</informalexample>
</para>
<para>
The first call to <function>odbc_result</function> returns the
value of the third field in the current record of the query
result. The second function call to
<function>odbc_result</function> returns the value of the field
whose field name is "val" in the current record of the query
result. An error occurs if a column number parameter for a field
is less than one or exceeds the number of columns (or fields) in
the current record. Similarly, an error occurs if a field with a
name that is not one of the fieldnames of the table(s) that
is(are) being queried.
</para>
<para>
Field indices start from 1. Regarding the way binary or
long column data is returned refer to <function>odbc_binmode
</function> and <function>odbc_longreadlen</function>.
<!--
If the requested field contains
binary data or is of datatype LONG,
longer than 4096 bytes, the contents is not
returned, instead it is sent directly to the client. Hint: If you
need to have binary data returned, use the SQL function HEX() to
retrieve the field in hexadecimal notation. E.g. "SELECT
HEX(binary_col) FROM mytable"
-->
</para>
</refsect1>
</refentry>
<refentry id="function.odbc-result-all">
<refnamediv>
<refname>odbc_result_all</refname>
<refpurpose>Print result as HTML table</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcprototype>
<funcdef>int <function>odbc_result_all</function></funcdef>
<paramdef>int <parameter>result_id</parameter></paramdef>
<paramdef>string <parameter><optional>format</optional></parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
Returns the number of rows in the result or
<literal>false</literal> on error.
</para>
<para>
<function>Odbc_result_all</function> will print all rows from a
result identifier produced by <function>odbc_exec</function>. The
result is printed in HTML table format. With the optional string
argument <parameter>format</parameter>, additional overall table
formatting can be done.
</para>
</refsect1>
</refentry>
<refentry id="function.odbc-rollback">
<refnamediv>
<refname>odbc_rollback</refname>
<refpurpose>Rollback a transaction</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcprototype>
<funcdef>int <function>odbc_rollback</function></funcdef>
<paramdef>int <parameter>connection_id</parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
Rolls back all pending statements on
<parameter>connection_id</parameter>. Returns
<literal>true</literal> on success, <literal>false</literal> on
failure.
</para>
</refsect1>
</refentry>
<refentry id="function.odbc-setoption">
<refnamediv>
<refname>odbc_setoption</refname>
<refpurpose>
Adjust ODBC settings. Returns false if an error occurs, otherwise
true.
</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcprototype>
<funcdef>int <function>odbc_setoption</function></funcdef>
<paramdef>int <parameter>id</parameter></paramdef>
<paramdef>int <parameter>function</parameter></paramdef>
<paramdef>int <parameter>option</parameter></paramdef>
<paramdef>int <parameter>param</parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
This function allows fiddling with the ODBC options for a
particular connection or query result. It was written to help
find work arounds to problems in quirky ODBC drivers. You should
probably only use this function if you are an ODBC programmer and
understand the effects the various options will have. You will
certainly need a good ODBC reference to explain all the different
options and values that can be used. Different driver versions
support different options.
</para>
<para>
Because the effects may vary depending on the ODBC driver, use of
this function in scripts to be made publicly available is
strongly discouraged. Also, some ODBC options are not available
to this function because they must be set before the connection
is established or the query is prepared. However, if on a
particular job it can make PHP work so your boss doesn't tell you
to use a commercial product, that's all that really
matters.
</para>
<para>
<parameter>ID</parameter> is a connection id or result id on
which to change the settings.For SQLSetConnectOption(), this is a
connection id. For SQLSetStmtOption(), this is a result
id.
</para>
<para>
<parameter>Function</parameter> is the ODBC function to use. The
value should be 1 for SQLSetConnectOption() and 2 for
SQLSetStmtOption().
</para>
<para>
Parameter <parameter>option</parameter> is the option to set.</para>
<para>
Parameter <parameter>param</parameter> is the value for the
given <parameter>option</parameter>.
<example>
<title>ODBC Setoption Examples</title>
<programlisting role="php">
// 1. Option 102 of SQLSetConnectOption() is SQL_AUTOCOMMIT.
// Value 1 of SQL_AUTOCOMMIT is SQL_AUTOCOMMIT_ON.
// This example has the same effect as
// odbc_autocommit($conn, true);
odbc_setoption ($conn, 1, 102, 1);
// 2. Option 0 of SQLSetStmtOption() is SQL_QUERY_TIMEOUT.
// This example sets the query to timeout after 30 seconds.
$result = odbc_prepare ($conn, $sql);
odbc_setoption ($result, 2, 0, 30);
odbc_execute ($result);
</programlisting>
</example>
</para>
</refsect1>
</refentry>
<refentry id="function.odbc-tables">
<refnamediv>
<refname>odbc_tables</refname>
<refpurpose>
Get the list of table names stored in a specific data source.
Returns a result identifier containing the
information.
</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcprototype>
<funcdef>int <function>odbc_tables</function></funcdef>
<paramdef>int <parameter>connection_id</parameter></paramdef>
<paramdef>string <parameter><optional>qualifier</optional></parameter></paramdef>
<paramdef>string <parameter><optional>owner</optional></parameter></paramdef>
<paramdef>string <parameter><optional>name</optional></parameter></paramdef>
<paramdef>string <parameter><optional>types</optional></parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
Lists all tables in the requested range. Returns an ODBC result
identifier or <literal>false</literal> on failure.
</para>
<para>
The result set has the following columns:
<itemizedlist>
<listitem><simpara>TABLE_QUALIFIER</simpara></listitem>
<listitem><simpara>TABLE_OWNER</simpara></listitem>
<listitem><simpara>TABLE_NAME</simpara></listitem>
<listitem><simpara>TABLE_TYPE</simpara></listitem>
<listitem><simpara>REMARKS</simpara></listitem>
</itemizedlist>
</para>
<simpara>
The result set is ordered by TABLE_TYPE, TABLE_QUALIFIER,
TABLE_OWNER and TABLE_NAME.
</simpara>
<para>
The <parameter>owner</parameter> and <parameter>name</parameter>
arguments accept search patterns ('%' to match zero or more
characters and '_' to match a single character).
</para>
<para>
To support enumeration of qualifiers, owners, and table types,
the following special semantics for the
<parameter>qualifier</parameter>, <parameter>owner</parameter>,
<parameter>name</parameter>, and
<parameter>table_type</parameter> are available:
<itemizedlist>
<listitem>
<simpara>
If <parameter>qualifier</parameter> is a single percent
character (%) and <parameter>owner</parameter> and
<parameter>name</parameter> are empty strings, then the result
set contains a list of valid qualifiers for the data
source. (All columns except the TABLE_QUALIFIER column contain
NULLs.)
</simpara>
</listitem>
<listitem>
<simpara>
If <parameter>owner</parameter> is a single percent character
(%) and <parameter>qualifier</parameter> and
<parameter>name</parameter> are empty strings, then the result
set contains a list of valid owners for the data source. (All
columns except the TABLE_OWNER column contain
NULLs.)
</simpara>
</listitem>
<listitem>
<simpara>
If <parameter>table_type</parameter> is a single percent
character (%) and <parameter>qualifier</parameter>,
<parameter>owner</parameter> and <parameter>name</parameter>
are empty strings, then the result set contains a list of
valid table types for the data source. (All columns except the
TABLE_TYPE column contain NULLs.)
</simpara>
</listitem>
</itemizedlist>
</para>
<para>
If <parameter>table_type</parameter> is not an empty string, it
must contain a list of comma-separated values for the types of
interest; each value may be enclosed in single quotes (') or
unquoted. For example, "'TABLE','VIEW'" or "TABLE, VIEW". If the
data source does not support a specified table type,
<function>odbc_tables</function> does not return any results for
that type.
</para>
<simpara>
See also <function>odbc_tableprivileges</function> to retrieve
associated privileges.
</simpara>
</refsect1>
</refentry>
<refentry id="function.odbc-tableprivileges">
<refnamediv>
<refname>odbc_tableprivileges</refname>
<refpurpose>
Lists tables and the privileges associated with each table
</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcprototype>
<funcdef>int <function>odbc_tableprivileges</function></funcdef>
<paramdef>int <parameter>connection_id</parameter></paramdef>
<paramdef>string <parameter><optional>qualifier</optional></parameter></paramdef>
<paramdef>string <parameter><optional>owner</optional></parameter></paramdef>
<paramdef>string <parameter><optional>name</optional></parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
Lists tables in the requested range and the privileges associated
with each table. Returns an ODBC result identifier or
<literal>false</literal> on failure.
</para>
<para>
The result set has the following columns:
<itemizedlist>
<listitem><simpara>TABLE_QUALIFIER</simpara></listitem>
<listitem><simpara>TABLE_OWNER</simpara></listitem>
<listitem><simpara>TABLE_NAME</simpara></listitem>
<listitem><simpara>GRANTOR</simpara></listitem>
<listitem><simpara>GRANTEE</simpara></listitem>
<listitem><simpara>PRIVILEGE</simpara></listitem>
<listitem><simpara>IS_GRANTABLE</simpara></listitem>
</itemizedlist>
</para>
<simpara>
The result set is ordered by TABLE_QUALIFIER, TABLE_OWNER and
TABLE_NAME.
</simpara>
<para>
The <parameter>owner</parameter> and <parameter>name</parameter>
arguments accept search patterns ('%' to match zero or more
characters and '_' to match a single character).
</para>
</refsect1>
</refentry>
<refentry id="function.odbc-columns">
<refnamediv>
<refname>odbc_columns</refname>
<refpurpose>
Lists the column names in specified tables. Returns a result
identifier containing the information.
</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcprototype>
<funcdef>int <function>odbc_columns</function></funcdef>
<paramdef>int <parameter>connection_id</parameter></paramdef>
<paramdef>string <parameter><optional>qualifier</optional></parameter></paramdef>
<paramdef>string <parameter><optional>owner</optional></parameter></paramdef>
<paramdef>string <parameter><optional>table_name</optional></parameter></paramdef>
<paramdef>string <parameter><optional>column_name</optional></parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
Lists all columns in the requested range. Returns an ODBC result
identifier or <literal>false</literal> on failure.
</para>
<para>
The result set has the following columns:
<itemizedlist>
<listitem><simpara>TABLE_QUALIFIER</simpara></listitem>
<listitem><simpara>TABLE_OWNER</simpara></listitem>
<listitem><simpara>TABLE_NAME</simpara></listitem>
<listitem><simpara>COLUMN_NAME</simpara></listitem>
<listitem><simpara>DATA_TYPE</simpara></listitem>
<listitem><simpara>TYPE_NAME</simpara></listitem>
<listitem><simpara>PRECISION</simpara></listitem>
<listitem><simpara>LENGTH</simpara></listitem>
<listitem><simpara>SCALE</simpara></listitem>
<listitem><simpara>RADIX</simpara></listitem>
<listitem><simpara>NULLABLE</simpara></listitem>
<listitem><simpara>REMARKS</simpara></listitem>
</itemizedlist>
</para>
<simpara>
The result set is ordered by TABLE_QUALIFIER, TABLE_OWNER and
TABLE_NAME.
</simpara>
<para>
The <parameter>owner</parameter>,
<parameter>table_name</parameter> and
<parameter>column_name</parameter> arguments accept search
patterns ('%' to match zero or more characters and '_' to match a
single character).
</para>
<simpara>
See also <function>odbc_columnprivileges</function> to retrieve
associated privileges.
</simpara>
</refsect1>
</refentry>
<refentry id="function.odbc-columnprivileges">
<refnamediv>
<refname>odbc_columnprivileges</refname>
<refpurpose>
Returns a result identifier that can be used to fetch a list of
columns and associated privileges
</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcprototype>
<funcdef>int <function>odbc_columnprivileges</function></funcdef>
<paramdef>int <parameter>connection_id</parameter></paramdef>
<paramdef>string <parameter><optional>qualifier</optional></parameter></paramdef>
<paramdef>string <parameter><optional>owner</optional></parameter></paramdef>
<paramdef>string <parameter><optional>table_name</optional></parameter></paramdef>
<paramdef>string <parameter><optional>column_name</optional></parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
Lists columns and associated privileges for the given table.
Returns an ODBC result identifier or <literal>false</literal> on
failure.
</para>
<para>
The result set has the following columns:
<itemizedlist>
<listitem><simpara>TABLE_QUALIFIER</simpara></listitem>
<listitem><simpara>TABLE_OWNER</simpara></listitem>
<listitem><simpara>TABLE_NAME</simpara></listitem>
<listitem><simpara>GRANTOR</simpara></listitem>
<listitem><simpara>GRANTEE</simpara></listitem>
<listitem><simpara>PRIVILEGE</simpara></listitem>
<listitem><simpara>IS_GRANTABLE</simpara></listitem>
</itemizedlist>
</para>
<simpara>
The result set is ordered by TABLE_QUALIFIER, TABLE_OWNER and
TABLE_NAME.
</simpara>
<para>
The <parameter>column_name</parameter> argument accepts search
patterns ('%' to match zero or more characters and '_' to match a
single character).
</para>
</refsect1>
</refentry>
<refentry id="function.odbc-gettypeinfo">
<refnamediv>
<refname>odbc_gettypeinfo</refname>
<refpurpose>
Returns a result identifier containing information about data
types supported by the data source.
</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcprototype>
<funcdef>int <function>odbc_gettypeinfo</function></funcdef>
<paramdef>int <parameter>connection_id</parameter></paramdef>
<paramdef>int <parameter><optional>data_type</optional></parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
Retrieves information about data types supported by the data
source. Returns an ODBC result identifier or
<literal>false</literal> on failure. The optional argument
<parameter>data_type</parameter> can be used to restrict the
information to a single data type.
</para>
<para>
The result set has the following columns:
<itemizedlist>
<listitem><simpara>TYPE_NAME</simpara></listitem>
<listitem><simpara>DATA_TYPE</simpara></listitem>
<listitem><simpara>PRECISION</simpara></listitem>
<listitem><simpara>LITERAL_PREFIX</simpara></listitem>
<listitem><simpara>LITERAL_SUFFIX</simpara></listitem>
<listitem><simpara>CREATE_PARAMS</simpara></listitem>
<listitem><simpara>NULLABLE</simpara></listitem>
<listitem><simpara>CASE_SENSITIVE</simpara></listitem>
<listitem><simpara>SEARCHABLE</simpara></listitem>
<listitem><simpara>UNSIGNED_ATTRIBUTE</simpara></listitem>
<listitem><simpara>MONEY</simpara></listitem>
<listitem><simpara>AUTO_INCREMENT</simpara></listitem>
<listitem><simpara>LOCAL_TYPE_NAME</simpara></listitem>
<listitem><simpara>MINIMUM_SCALE</simpara></listitem>
<listitem><simpara>MAXIMUM_SCALE</simpara></listitem>
</itemizedlist>
</para>
<simpara>The result set is ordered by DATA_TYPE and TYPE_NAME.
</simpara>
</refsect1>
</refentry>
<refentry id="function.odbc-primarykeys">
<refnamediv>
<refname>odbc_primarykeys</refname>
<refpurpose>
Returns a result identifier that can be used to fetch the column
names that comprise the primary key for a table
</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcprototype>
<funcdef>int <function>odbc_primarykeys</function></funcdef>
<paramdef>int <parameter>connection_id</parameter></paramdef>
<paramdef>string <parameter>qualifier</parameter></paramdef>
<paramdef>string <parameter>owner</parameter></paramdef>
<paramdef>string <parameter>table</parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
Returns the column names that comprise the primary key for a
table. Returns an ODBC result identifier or
<literal>false</literal> on failure.
</para>
<para>
The result set has the following columns:
<itemizedlist>
<listitem><simpara>TABLE_QUALIFIER</simpara></listitem>
<listitem><simpara>TABLE_OWNER</simpara></listitem>
<listitem><simpara>TABLE_NAME</simpara></listitem>
<listitem><simpara>COLUMN_NAME</simpara></listitem>
<listitem><simpara>KEY_SEQ</simpara></listitem>
<listitem><simpara>PK_NAME</simpara></listitem>
</itemizedlist>
</para>
</refsect1>
</refentry>
<refentry id="function.odbc-foreignkeys">
<refnamediv>
<refname>odbc_foreignkeys</refname>
<refpurpose>
Returns a list of foreign keys in the specified table or a list
of foreign keys in other tables that refer to the primary key in
the specified table
</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcprototype>
<funcdef>int <function>odbc_foreignkeys</function></funcdef>
<paramdef>int <parameter>connection_id</parameter></paramdef>
<paramdef>string <parameter>pk_qualifier</parameter></paramdef>
<paramdef>string <parameter>pk_owner</parameter></paramdef>
<paramdef>string <parameter>pk_table</parameter></paramdef>
<paramdef>string <parameter>fk_qualifier</parameter></paramdef>
<paramdef>string <parameter>fk_owner</parameter></paramdef>
<paramdef>string <parameter>fk_table</parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
<function>Odbc_foreignkeys</function> retrieves information about
foreign keys. Returns an ODBC result identifier or
<literal>false</literal> on failure.
</para>
<para>
The result set has the following columns:
<itemizedlist>
<listitem><simpara>PKTABLE_QUALIFIER</simpara></listitem>
<listitem><simpara>PKTABLE_OWNER</simpara></listitem>
<listitem><simpara>PKTABLE_NAME</simpara></listitem>
<listitem><simpara>PKCOLUMN_NAME</simpara></listitem>
<listitem><simpara>FKTABLE_QUALIFIER</simpara></listitem>
<listitem><simpara>FKTABLE_OWNER</simpara></listitem>
<listitem><simpara>FKTABLE_NAME</simpara></listitem>
<listitem><simpara>FKCOLUMN_NAME</simpara></listitem>
<listitem><simpara>KEY_SEQ</simpara></listitem>
<listitem><simpara>UPDATE_RULE</simpara></listitem>
<listitem><simpara>DELETE_RULE</simpara></listitem>
<listitem><simpara>FK_NAME</simpara></listitem>
<listitem><simpara>PK_NAME</simpara></listitem>
</itemizedlist>
</para>
<simpara>
If <parameter>pk_table</parameter> contains a table name,
<function>odbc_foreignkeys</function> returns a result set
containing the primary key of the specified table and all of the
foreign keys that refer to it.
</simpara>
<simpara>
If <parameter>fk_table</parameter> contains a table name,
<function>odbc_foreignkeys</function> returns a result set
containing all of the foreign keys in the specified table and the
primary keys (in other tables) to which they refer.
</simpara>
<simpara>
If both <parameter>pk_table</parameter> and
<parameter>fk_table</parameter> contain table names,
<function>odbc_foreignkeys</function> returns the foreign keys in
the table specified in <parameter>fk_table</parameter> that refer
to the primary key of the table specified in
<parameter>pk_table</parameter>. This should be one key at most.
</simpara>
</refsect1>
</refentry>
<refentry id="function.odbc-procedures">
<refnamediv>
<refname>odbc_procedures</refname>
<refpurpose>
Get the list of procedures stored in a specific data source.
Returns a result identifier containing the information.
</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcprototype>
<funcdef>int <function>odbc_procedures</function></funcdef>
<paramdef>int <parameter>connection_id</parameter></paramdef>
<paramdef>string <parameter><optional>qualifier</optional></parameter></paramdef>
<paramdef>string <parameter><optional>owner</optional></parameter></paramdef>
<paramdef>string <parameter><optional>name</optional></parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
Lists all procedures in the requested range. Returns an ODBC
result identifier or <literal>false</literal> on failure.
</para>
<para>
The result set has the following columns:
<itemizedlist>
<listitem><simpara>PROCEDURE_QUALIFIER</simpara></listitem>
<listitem><simpara>PROCEDURE_OWNER</simpara></listitem>
<listitem><simpara>PROCEDURE_NAME</simpara></listitem>
<listitem><simpara>NUM_INPUT_PARAMS</simpara></listitem>
<listitem><simpara>NUM_OUTPUT_PARAMS</simpara></listitem>
<listitem><simpara>NUM_RESULT_SETS</simpara></listitem>
<listitem><simpara>REMARKS</simpara></listitem>
<listitem><simpara>PROCEDURE_TYPE</simpara></listitem>
</itemizedlist>
</para>
<para>
The <parameter>owner</parameter> and <parameter>name</parameter>
arguments accept search patterns ('%' to match zero or more
characters and '_' to match a single character).
</para>
</refsect1>
</refentry>
<refentry id="function.odbc-procedurecolumns">
<refnamediv>
<refname>odbc_procedurecolumns</refname>
<refpurpose>
Retrieve information about parameters to procedures
</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcprototype>
<funcdef>int <function>odbc_procedurecolumns</function></funcdef>
<paramdef>int <parameter>connection_id</parameter></paramdef>
<paramdef>string <parameter><optional>qualifier</optional></parameter></paramdef>
<paramdef>string <parameter><optional>owner</optional></parameter></paramdef>
<paramdef>string <parameter><optional>proc</optional></parameter></paramdef>
<paramdef>string <parameter><optional>column</optional></parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
Returns the list of input and output parameters, as well as the
columns that make up the result set for the specified procedures. Returns
an ODBC result identifier or <literal>false</literal> on failure.
</para>
<para>
The result set has the following columns:
<itemizedlist>
<listitem><simpara>PROCEDURE_QUALIFIER</simpara></listitem>
<listitem><simpara>PROCEDURE_OWNER</simpara></listitem>
<listitem><simpara>PROCEDURE_NAME</simpara></listitem>
<listitem><simpara>COLUMN_NAME</simpara></listitem>
<listitem><simpara>COLUMN_TYPE</simpara></listitem>
<listitem><simpara>DATA_TYPE</simpara></listitem>
<listitem><simpara>TYPE_NAME</simpara></listitem>
<listitem><simpara>PRECISION</simpara></listitem>
<listitem><simpara>LENGTH</simpara></listitem>
<listitem><simpara>SCALE</simpara></listitem>
<listitem><simpara>RADIX</simpara></listitem>
<listitem><simpara>NULLABLE</simpara></listitem>
<listitem><simpara>REMARKS</simpara></listitem>
</itemizedlist>
</para>
<simpara>The result set is ordered by PROCEDURE_QUALIFIER, PROCEDURE_OWNER,
PROCEDURE_NAME and COLUMN_TYPE.
</simpara>
<para>
The <parameter>owner</parameter>, <parameter>proc</parameter> and
<parameter>column</parameter> arguments accept search patterns
('%' to match zero or more characters and '_' to match a single
character).
</para>
</refsect1>
</refentry>
<refentry id="function.odbc-specialcolumns">
<refnamediv>
<refname>odbc_specialcolumns</refname>
<refpurpose>
Returns either the optimal set of columns that uniquely
identifies a row in the table or columns that are automatically
updated when any value in the row is updated by a transaction
</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcprototype>
<funcdef>int <function>odbc_specialcolumns</function></funcdef>
<paramdef>int <parameter>connection_id</parameter></paramdef>
<paramdef>int <parameter>type</parameter></paramdef>
<paramdef>string <parameter>qualifier</parameter></paramdef>
<paramdef>string <parameter>owner</parameter></paramdef>
<paramdef>string <parameter>table</parameter></paramdef>
<paramdef>int <parameter>scope</parameter></paramdef>
<paramdef>int <parameter>nullable</parameter></paramdef>
</funcprototype>
</funcsynopsis>
<simpara>
When the type argument is SQL_BEST_ROWID,
<function>odbc_specialcolumns</function> returns the
column or columns that uniquely identify each row in the table.
</simpara>
<simpara>
When the type argument is SQL_ROWVER,
<function>odbc_specialcolumns</function> returns the
optimal column or set of columns that, by retrieving values from
the column or columns, allows any row in the specified table to be
uniquely identified.
</simpara>
<simpara>
Returns an ODBC result identifier or <literal>false</literal> on
failure.
</simpara>
<para>
The result set has the following columns:
<itemizedlist>
<listitem><simpara>SCOPE</simpara></listitem>
<listitem><simpara>COLUMN_NAME</simpara></listitem>
<listitem><simpara>DATA_TYPE</simpara></listitem>
<listitem><simpara>TYPE_NAME</simpara></listitem>
<listitem><simpara>PRECISION</simpara></listitem>
<listitem><simpara>LENGTH</simpara></listitem>
<listitem><simpara>SCALE</simpara></listitem>
<listitem><simpara>PSEUDO_COLUMN</simpara></listitem>
</itemizedlist>
</para>
<simpara>
The result set is ordered by SCOPE.
</simpara>
</refsect1>
</refentry>
<refentry id="function.odbc-statistics">
<refnamediv>
<refname>odbc_statistics</refname>
<refpurpose>Retrieve statistics about a table</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcprototype>
<funcdef>int <function>odbc_statistics</function></funcdef>
<paramdef>int <parameter>connection_id</parameter></paramdef>
<paramdef>string <parameter>qualifier</parameter></paramdef>
<paramdef>string <parameter>owner</parameter></paramdef>
<paramdef>string <parameter>table_name</parameter></paramdef>
<paramdef>int <parameter>unique</parameter></paramdef>
<paramdef>int <parameter>accuracy</parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
Get statistics about a table and it's indexes. Returns an ODBC
result identifier or <literal>false</literal> on failure.
</para>
<para>
The result set has the following columns:
<itemizedlist>
<listitem><simpara>TABLE_QUALIFIER</simpara></listitem>
<listitem><simpara>TABLE_OWNER</simpara></listitem>
<listitem><simpara>TABLE_NAME</simpara></listitem>
<listitem><simpara>NON_UNIQUE</simpara></listitem>
<listitem><simpara>INDEX_QUALIFIER</simpara></listitem>
<listitem><simpara>INDEX_NAME</simpara></listitem>
<listitem><simpara>TYPE</simpara></listitem>
<listitem><simpara>SEQ_IN_INDEX</simpara></listitem>
<listitem><simpara>COLUMN_NAME</simpara></listitem>
<listitem><simpara>COLLATION</simpara></listitem>
<listitem><simpara>CARDINALITY</simpara></listitem>
<listitem><simpara>PAGES</simpara></listitem>
<listitem><simpara>FILTER_CONDITION</simpara></listitem>
</itemizedlist>
</para>
<simpara>
The result set is ordered by NON_UNIQUE, TYPE, INDEX_QUALIFIER,
INDEX_NAME and SEQ_IN_INDEX.
</simpara>
</refsect1>
</refentry>
</reference>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
sgml-parent-document:nil
sgml-default-dtd-file:"../../manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
-->