SQLCODEのルール
SQLCODEは、ANSI/ISO SQL-99規格では、定義されていません。この使用は、ANSI/ISO SQL-92規格で非推奨になり、SQL-99規格で廃止されました。
SQLCODEステータス変数には、次のルールが適用されます。
- プリコンパイラ検証の目的の場合、SQLCODEは、埋め込みSQLアプリケーション向けに32ビット符号付きINTEGER値として定義する必要があります。
- SQLCODEおよびSQLSTATEはどちらも、同じコンパイル単位に指定できる。従って、両方のステータス変数には、有効なステータス変数コードが含まれます。
SQLSTATEのルール
SQLSTATEは、ANSI/ISO SQL-99規格によって5文字の文字列値として定義されています。この値は、論理的には2文字のクラスと3文字のサブクラスに分けられます。
SQLSTATEステータス変数には、次のルールが適用されます。
- ステータス コード値は、整数または整数とLatinの大文字の混合とすることができる。
- 特別に指定されない限り、CLI/TDPおよびTeradata Databaseエラー メッセージは、必ずSQLSTATE値にマッピングされる。
- マッピングされないCLI/TDPエラーには、T0のクラスと、3桁のCLIエラー コードを含むサブクラスがある。
例えば、CLIエラー157 (無効なUse_Presence_Bitsオプション)は、クラスT0とサブクラス157を生成します。
- マッピングされないTeradata Databaseエラーには、T1~T9のクラスがあり、Teradata Databaseエラー コードの最初の数字に対応するクラス内の数字が付けられます。
サブクラスには、残りの3桁のTeradata Databaseエラー コードが含まれる。
例えば、エラー コード3776 (コメントが終了しない)は、クラスT3とサブクラス776にマッピングされる。
- プリコンパイラ検証の目的の場合、SQLSTATEは、固定長のCHAR(5)配列として定義する必要がある。
C言語プログラムの場合、SQLSTATEは、Cヌル終了記号に適合するCHAR(6)として定義する必要がある。
- SQLCODEおよびSQLSTATEはどちらも、同じコンパイル単位に指定できる。従って、両方のステータス変数には、有効な結果コードが含まれる。
SQLCODEからSQLSTATEへのマッピング テーブル
次の表は、CLI、TDP、またはTeradata SQLエラーの結果として生成されないSQLCODE値について、SQLCODE値をSQLSTATE値にマッピングしています。
SQLCODE | SQLSTATE | SQLCODE | SQLSTATE | ||
---|---|---|---|---|---|
クラス | サブクラス | クラス | サブクラス | ||
100 | 02 | 000 | -741 | 08 | 002 |
901 | 01 | 901 | -742 | 08 | 000 |
902 | 01 | 004 | -743 | 08 | 000 |
-101 | 54 | 001 | -744 | 08 | 000 |
-104(1) | 42(2) | 512 | -752 | 08 | 752 |
-302 | 22 | 024 | -804 | T0 | 804 |
-303 | 22 | 509 | -811 | 21 | 000 |
-304 | 22 | 003 | -822 | 51 | 004 |
-305 | 22 | 002 | -840 | 21 | 840 |
-413 | 22 | 003 | -901 | T0 | T10 |
-501 | 24 | 501 | -925 | 56 | 021 |
-502 | 24 | 502 | -926 | 56 | 021 |
-504 | 52 | 008 | -942 | T0 | T12 |
-508 | 24 | 508 | -943 | 24 | 000 |
-510 | 53 | 028 | -1001 | T0 | T13 |
-514 | 24 | 000 | -1002 | T0 | T14 |
-515 | 07 | 515 | -1003 | T0 | T15 |
-563 | 08 | 003 | -1005 | T0 | T16 |
-650 | 04 | 000 | -1006 | 07 | T17 |
-651 | 03 | 000 | -1007 | 22 | 007 |
-652 | 04 | 000 | -1009 | 22 | T04 |
-653 | 41 | 000 | -1010 | T0 | T18 |
-740 | 08 | 003 | -1013 | 22 | 023 |
(1) このコードは、-104ではなく、-84である必要があります。 (2) この使用法は、IBM DB2での使用法とは異なります。DB2はクラス37を使用しますが、これは動的SQLにのみ適用されます。 コード2Aは静的SQLに適用されます。 |