16.20 - SQLCODE値のSQLSTATE値へのマッピング - Teradata Vantage NewSQL Engine

Teradata Vantage™ SQL ストアド プロシージャおよび埋め込みSQL

prodname
Teradata Database
Teradata Vantage NewSQL Engine
vrm_release
16.20
category
プログラミング リファレンス
featnum
B035-1148-162K-JPN

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に適用されます。