ヘッダーをスキップ

Oracle Rdb SQLリファレンス・マニュアル リリース7.2 E06178-01 |
| 目次 | 索引

戻る | 次へ |

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

表C-4は、それぞれ成功、警告およびデータなしの完了条件としてのSQLSTATEクラス00、01および02を示しています。他のすべてのクラスでは例外条件を定義します。

埋込みSQLを使用する場合、埋込み例外宣言では、次の例外カテゴリを定義します。

- NOT FOUND: SQLSTATEクラス = 02

- SQLWARNING: SQLSTATEクラス = 01

- SQLEXCEPTION: SQLSTATEクラス > 02

- SQLERROR: SQLEXCEPTIONまたはSQLWARNING

例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データベース規格による要求に応じて、これらの定義ファイルを定期的に追加します。