表C-4は、それぞれ成功、警告およびデータなしの完了条件としてのSQLSTATEクラス00、01および02を示しています。他のすべてのクラスでは例外条件を定義します。
埋込みSQLを使用する場合、埋込み例外宣言では、次の例外カテゴリを定義します。
例C-10は、CプログラムのパラメータとしてSQLSTATEを宣言する方法、および文字列比較関数を使用してSQLSTATE値を評価する方法を示しています。CプログラムでSQLSTATEを宣言する場合は、すべて大文字でSQLSTATEを入力する必要があります。
例C-10 CプログラムでのSQLSTATEの宣言 |
---|
char SQLSTATE[6]; long SQLCODE; main() { EXEC SQL SELECT T_INT INTO :c1 FROM FOUR_TYPES WHERE T_DECIMAL = 4.1; printf ("SQLCODE should be < 0; its value is %ld\n", SQLCODE); printf ("SQLSTATE should be '22002'; its value is %s\n", SQLSTATE); if (SQLCODE >= 0 || strncmp (SQLSTATE, "22002", 5) != 0) flag = 0; } |
GET DIAGNOSTICS文を使用すると、プログラムにSQLSTATE情報を返すことができます。詳細は、「GET DIAGNOSTICS文」を参照してください。
Oracle Rdbでは、SQLSTATEの値に対するインクルード・ファイルのセットを備えています。これらのファイルは次の名前でSYS$LIBRARYにあります。
ファイル名 | 説明 |
---|---|
SQLSTATE.BAS | BASICインクルード・ファイル |
SQLSTATE.FOR | FORTRANインクルード・ファイル |
SQLSTATE.H | CまたはC++ヘッダー・ファイル |
SQLSTATE.LIB | COBOLインクルード・ファイル |
SQLSTATE.PAS | Pascalインクルード・ファイル |
SQLSTATE.SQL | SQL宣言ファイル |
さらに、データベース内に表(SQLSTATE_TABLE)を作成し、値および記号名を付けて移入するための特殊スクリプト(SQLSTATE_TABLE.SQL)が用意されています。
オラクル社では、Oracle Rdbによって新規SQLSTATE値が使用される際に、またはANSIおよびISO SQLデータベース規格による要求に応じて、これらの定義ファイルを定期的に追加します。