The SQL Communication Area (SQLCA) is a data structure to which the DBMS returns information about the execution of an SQL statement.
SQLSTATE
SQLSTATE is a five-character string in which CA IDMS returns the status of the last SQL statement executed. It is divided into a two-character class and a three-character subclass. Standard values are associated with each class and subclass, which minimizes the need for vendors to define their own values and makes applications more portable from one environment to another.
The following list displays the SQLSTATE values that CA IDMS can return. It is divided into sections based on the class (the first 2 characters of the SQLSTATE value). Each subclass (the last 3 characters of the SQLSTATE value) is listed under its associated class.
SQLSTATE Values
00 Successful completion 000 No subclass 01 Warning 000 No subclass 004 String data, right truncation 00C SQL-invoked procedure returned result sets 00D Additional result sets returned 00E Attempt to return too many result sets 010 Column cannot be mapped 600 Inconsistent or invalid option 602 Entity or association already exists 605 Entity not defined in Catalog 606 Invalid option for physical DDL 607 Invalid option for DMCL 608 Connecting to a dictionary which is missing either or or both of DDLCAT/DDLDML areas 610 Database is inconsistent with request 611 SQL routine parse error 612 ADS compilation for an SQL routine failed 613 Drop of SQL routine completed with warnings 638 Warning returned from table procedure 02 No data 000 No subclass 07 Dynamic SQL error 000 No subclass 001 USING clause does not match dynamic parameter specification 002 USING clause does not match target specification 003 Cursor specification cannot be executed 004 USING clause required for dynamic parameters 08 Connection exception 000 No subclass 004 SQL-server rejected establishment of SQL-connection 006 Connection failure 0M Invalid SQL-invoked procedure reference 000 No subclass 0N SQL/XML Mapping Error 000 No subclass 001 Unmappable XML name 002 Invalid XML character 21 Cardinality violation 000 No subclass 22 Data Exception 000 No subclass 001 String data, right truncation 002 Null value, no indicator parameter 003 Numeric value out of range 005 Error in assignment 007 Invalid datetime format 008 Datetime field overflow 00J Nonidentical notations with the same name 00K Nonidentical unparsed entities with the same name 00L Not an XML document 00M Invalid XML document 00N Invalid XML content 00R XML value overflow 00S Invalid comment 00T Invalid processing instruction 011 Substring error 012 Division by zero 019 Invalid escape character 23 Constraint violation 000 No subclass 501 Duplicate key violation 24 Invalid cursor state 000 No subclass 25 Invalid transaction state 000 No subclass 006 Read-only SQL-transaction 26 Invalid SQL statement name 000 No subclass 28 Invalid authorization specification 000 No subclass 602 Entity or association already defined 605 Entity or association not previously defined 607 Authorization ids not specified 2C Invalid character set name 000 No subclass 34 Invalid cursor name 000 No subclass 37 Syntax error or access rule violation 000 No subclass 38 External routine exception 000 No subclass 999 ADS dialog failed or dialog does not exist 39 External routine invocation exception 000 No subclass 3F Invalid schema name 000 No subclass 40 Transaction rollback 000 No subclass 001 Serialization failure 42 Syntax error or access rule violation 000 No subclass 500 Table not found 501 Column not found 502 Entity already defined 503 Authorization failure 504 Cursor not declared or previously declared 505 Entity not found 506 Invalid identifier 507 Keyword used as identifier 600 Invalid statement 601 Statement not valid in this context 603 Statement not valid for this schema 604 Invalid data type 606 Invalid statement option 607 Missing statement option 609 Invalid constraint definition 610 Invalid number of columns 50 CA-defined errors 000 No subclass 002 Limit exceeded 003 Space exceeded 00B Internal error 00I Schema mismatch 00J Invalid entity definition 00K Uncategorized error 00L Invalid calling parameters 60 &U$IDMS. specific errors 000 No subclass 001 Problem with load module or synchronization stamps 002 Database error 003 Rollback failed 004 Failure while opening or describing a received cursor 005 Unexpected error from GET/PUT SCRATCH 64 &U$IDMS. Physical DDL error 000 No subclass 6U &U$IDMS. Utility error 000 No subclass
SQLCODE
For status checking, another important field in the SQLCA structure is SQLCODE. The following table shows the values that the DBMS may return to this field.
Value |
Meaning |
---|---|
< 0 |
The SQL statement returned an error (see the following error values) |
0 |
The SQL statement was executed successfully |
1 |
The SQL statement was executed successfully with a warning |
100 |
There are no more rows associated with the current query, or no rows satisfied the search criteria in a searched update or delete Note: The SQL standard only defines meaning to the values of 0 and 100. Negative SQLCODE values signify an error; however, specific values are not standardized as with SQLSTATE. |
SQLCODE Error Values
The following table associates SQLCODE error values with one of the three kinds of SQL statement failure and suggests the appropriate error-handling strategy for each category of error:
Value |
Level of failure |
Meaning |
---|---|---|
-7 |
Task |
An internal error caused a task abend, leading to rollback and termination of the SQL transaction and termination of the SQL session |
-6 |
SQL session |
An error caused an SQL session failure, leading to rollback, termination of the SQL transaction and termination of the SQL session. A program intending to retry the SQL statements should first terminate the SQL session with one of these statements:
|
-5 |
SQL transaction |
An error has caused an SQL transaction failure, leading to rollback and termination of the SQL transaction. A program intending to retry the SQL statements should first terminate the transaction with one of these statements:
|
-4 |
SQL statement |
An error has caused failure of the SQL statement to execute; the effect of the statement, if any, on the database has been rolled out. Unless the reason for the error is one that the program can handle, the program should terminate the session or transaction. |
SQLCERC
If an error is returned, the DBMS also returns a value in the SQLCERC field of the SQLCA. The value in this field is the SQL error code.
In certain cases, you can use this information to recover from error conditions. For example, if 1038 is returned to SQLCERC, a deadlock has occurred. The application program can handle the deadlock by first terminating the database transaction and then resuming processing after the last commit or start of transaction.
SQLCERC values correspond to the last four digits of the CA IDMS/DB runtime messages. To determine the meaning of a particular SQLCERC value, refer to the text and description of the equivalent DB message.
Note: For more information about the documentation of DB messages, see the CA IDMS Messages and Codes Guide, or issue a DCMT DISPLAY MESSAGE DBnnnnnn statement, as documented in the CA IDMS System Tasks and Operator Commands Guide.
Other SQLCA Fields
For error checking and reporting, these are other useful SQLCA fields:
Field |
Description of contents |
---|---|
SQLCLNO |
Source file line number from which the SQL statement was obtained |
SQLCSER |
Offset into the SQL statement buffer where a syntax error was recognized |
SQLCNRP |
Number of rows processed by the SQL statement |
SQLCERM |
Text of the error message |
SQLCERL |
Length of error message text |
SQLCNRRS |
Actual number of results sets that an SQL invoked procedure returns |
How SQLCA Is Initialized
The DBMS initializes SQLCA values on every SQL statement execution. If the program accesses the SQLCA after issuing an SQL statement, all SQLCA values refer to that statement.
SQLPIB Fields
When you display or log error information, you may wish to include information in fields of the SQL Program Information Block (SQLPIB):
Field |
Description of contents |
---|---|
SQLDTS |
Date and time the program was compiled |
SQLPGM |
Name of the RCM that is the source of the SQL statement |
Copyright © 2013 CA.
All rights reserved.
|
|