16.20 - SQLCAフィールド - 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

SQLCAは、埋め込みSQLアプリケーションでのみ使用されます。ステータスを報告するためにSQLCODEを使用するストアド プロシージャは、SQLCODE変数を宣言してクエリー、文のステータスを判別します。

次の表では、SQLCAのフィールドについて説明します。

フィールド名 形式 説明
SQLCAID CHARACTER(8) 文字列の’SQLCA.   ’が含まれます。
SQLCABC INTEGER SQLCAの長さ(136(x'88'))。
SQLCODE INTEGER SQL文の実行結果の1次標識。
  • SQLCODEが0の場合、文は通常どおりに実行されました。
  • SQLCODEが正の値の場合、エラーではない例外が生じました。たとえば、データが見つからないか、さまざまな致命的でない警告が発生します。
  • SQLCODEが負の値の場合、エラー状態が生じて文は失敗しました。

SQLCODEとその定義として可能な値については、メッセージ リファレンスで説明されています。

SQLERRM VARCHAR(70) 変数情報に関連付けられたSQLCODEのエラー メッセージの挿入が含まれます。

SQLERRMフィールドの挿入は、単一の文字列としてアプリケーションに提示されます。文字列の長さが示されますが、個々の挿入の長さは示されません。

文字列は16ビットの語で始まり、残ったデータの長さが含まれます。

このデータは、挿入テキストと挿入の区切り文字として機能するX'FF'という文字を含めて合計70文字で構成されます。

挿入および区切り文字が70文字を超える場合、その配列は右側が切り捨てられます。

例えば、-552というSQLCODE(権限違反)を指定すると、SQLERRMには次の3つまたは4つの挿入が入ります。

  • 必要な権限を持たないユーザーのユーザー名。
  • 使用禁止だった権限の名前。
  • 権限を必要としたデータベースの名前。
  • テーブル、ビュー、マクロ、またはストアド プロシージャで権限(データベース レベル権限を除く)を必要としたものの名前。
SQLERRP CHARACTER(8) エラーを検出したプリプロセッサ モジュールの名前が含まれます。
SQLERRD 6ワードの配列 配列内に保管されるさまざまな情報が含まれます。

配列のアドレス指定方式は、C、COBOL、およびPL/Iによってそれぞれが異なるため、以下の6ワードのSQLERRDの記述には番号が付けられません。

6ワードを順番に上げると、以下のとおりです。
  • CLIv2、TDP、またはTeradata Databaseエラー コード。
  • 将来の使用に備えて予約。
  • 該当する場所で処理された行数。

    このフィールドは、通常はアクティビティ カウントといいます。

    例えば、選択カーソルのOPENで選択した行数は、この語でアプリケーションに戻されます。

  • 関連費用見積もり。この値は、Teradata Databaseによって戻されますが、PREPARE文を使って設定し、さまざまな動的SQL文の見積もりコストをCPUサイクルで比較するために使用することができます。
  • 将来の使用に備えて予約。
  • 将来の使用に備えて予約。
SQLWARN CHARACTER(11)配列 警告状態が存在していることを示します。

SQLWARN6を除き、それぞれの文字は値の埋め込み文字または'W'のいずれかの形を取ります。

SQLWARNの11文字は、次のように定義されます。
  • SQLWARN 0は、次に示すように、残りの10の警告コードのいずれかが設定されているかどうかを表わします。
    • Wの場合、他の10のコードの1つまたは複数に'W'が入っているか、SQLWARN6に'W'または'R'が入っています。
    • 埋め込み文字の場合、残りの10文字も埋め込み文字です。
  • SQLWARN 1の場合:
    • Wの場合、1つまたは複数の出力文字値またはバイト列が、それらを受け取るように指定したホスト変数が小さすぎたために切り捨てられました。

      この条件が生じた場合、切り捨てられた値の標識変数には、切り捨てられる前の長さが入ります。

    • 埋め込み文字の場合、切り捨ては行なわれませんでした。
  • SQLWARN 2の場合:
    • Wの場合、Teradata Databaseによって警告が発行されました。SQLCODE状況変数には警告コードが含まれます。
    • 埋め込み文字の場合、警告は発行されませんでした。
  • SQLWARN 3の場合:
    • Wの場合、SELECTによって戻された列数が、INTO節のホスト変数の数と異なります。

      アプリケーションに実際に戻される変数の数は、これら2つの値よりも小さくなります。

    • 埋め込み文字の場合、SELECTによって戻された列数が、INTO節のホスト変数の数と一致しています。
  • SQLWARN 4は今後使用するために予約されています。
  • SQLWARN 5は今後使用するために予約されています。
  • SQLWARN 6の場合:
    • Wの場合、文により、Teradata SQLで暗黙的な作業単位のロールバックが行われました。この場合の例として、デッドロックが検出されたことによるものがあります。
    • Rの場合、再試行可能なエラーが生じました。
    • 埋め込み文字の場合には、ロールバックは行われず、エラーもありませんでした。
  • SQLWARN 7は今後使用するために予約されています。
  • SQLWARN8は今後使用するために予約されています。
  • SQLWARN9は今後使用するために予約されています。
  • SQLWARNAは今後使用するために予約されています。
   
SQLEXT CHARACTER(5) SQLCODEに関連付けられたSQLSTATE値が含まれます。