ヘッダーをスキップ
Oracle Rdb SQLリファレンス・マニュアル
リリース7.2
E06178-01
  目次
目次
索引
索引

戻る
戻る
 
次へ
次へ
 

C.5.2 SQLSTATEステータス・パラメータの使用

表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にあります。

表C-5 SQLSTATEのインクルード・ファイル
ファイル名 説明
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データベース規格による要求に応じて、これらの定義ファイルを定期的に追加します。