| PostgreSQL Reference Manual - Volume 2 - Programming Guide by The PostgreSQL Global Development Group Paperback (6"x9"), 408 pages ISBN 0954612035 RRP £19.95 ($34.95) Sales of this book support the PostgreSQL project! Get a printed copy>>> |
3.11.2 sqlca
For more powerful error handling, the embedded SQL interface
provides a global variable with the name sqlca
that has the following structure:
struct
{
char sqlcaid[8];
long sqlabc;
long sqlcode;
struct
{
int sqlerrml;
char sqlerrmc[70];
} sqlerrm;
char sqlerrp[8];
long sqlerrd[6];
char sqlwarn[8];
char sqlstate[5];
} sqlca;
(In a multithreaded program, every thread automatically gets its
own copy of sqlca. This works similarly to the
handling of the standard C global variable
errno.)
sqlca covers both warnings and errors. If
multiple warnings or errors occur during the execution of a
statement, then sqlca will only contain
information about the last one.
If no error occurred in the last SQL statement,
sqlca.sqlcode will be 0 and
sqlca.sqlstate will be
"00000". If a warning or error occurred, then
sqlca.sqlcode will be negative and
sqlca.sqlstate will be different from
"00000". A positive
sqlca.sqlcode indicates a harmless condition,
such as that the last query returned zero rows.
sqlcode and sqlstate are two
different error code schemes; details appear below.
If the last SQL statement was successful, then
sqlca.sqlerrd[1] contains the OID of the
processed row, if applicable, and
sqlca.sqlerrd[2] contains the number of
processed or returned rows, if applicable to the command.
In case of an error or warning,
sqlca.sqlerrm.sqlerrmc will contain a string
that describes the error. The field
sqlca.sqlerrm.sqlerrml contains the length of
the error message that is stored in
sqlca.sqlerrm.sqlerrmc (the result of
strlen(), not really interesting for a C
programmer). Note that some messages are too long to fit in the
fixed-size sqlerrmc array; they will be truncated.
In case of a warning, sqlca.sqlwarn[2] is set
to W. (In all other cases, it is set to
something different from W.) If
sqlca.sqlwarn[1] is set to
W, then a value was truncated when it was
stored in a host variable. sqlca.sqlwarn[0] is
set to W if any of the other elements are set
to indicate a warning.
The fields sqlcaid,
sqlcabc,
sqlerrp, and the remaining elements of
sqlerrd and
sqlwarn currently contain no useful
information.
The structure sqlca is not defined in the SQL
standard, but is implemented in several other SQL database
systems. The definitions are similar at the core, but if you want
to write portable applications, then you should investigate the
different implementations carefully.
| ISBN 0954612035 | PostgreSQL Reference Manual - Volume 2 - Programming Guide | See the print edition |