BTEQとCLIv2の呼び出し引数に関するルール - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - SQLデータ操作言語

Product
Advanced SQL Engine
Teradata Database
Release Number
17.10
Published
2021年7月
Language
日本語
Last Update
2021-09-23
dita:mapPath
ja-JP/vjt1596846980081.ditamap
dita:ditavalPath
ja-JP/wrg1590696035526.ditaval
dita:id
B035-1146
Product Category
Software
Teradata Vantage
BTEQまたはCLIv2から実行する呼び出し引数には、以下のルールが当てはまります。
  • IN引数またはINOUT引数は、値式でなければなりません。
  • IN引数またはINOUT引数として使用する値式の中で、コロン(:)を先頭に付けた識別子があれば、その識別子は、CALLを備えた文のUSING句と関連付けられているUSING変数を参照しなければなりません。式の値は、呼び出すプロシージャ内の対応するパラメータの入力値として処理されます。
  • OUT引数は、次のいずれかにすることができます。
    • 出力ホスト変数。
    • 疑問符などのプレースホルダー。
    • プロシージャ定義で指定されているOUTパラメータ名以外の任意の名前。
  • これらのルールは、?パラメータの使用に適用されます。

    以下のプロシージャ呼び出しは、パラメータp1およびresutl_1の情報としてAMBIGUOUS、AMBIGUOUSを返します。このとき、実行段階でp1パラメータの結果となる型を決定するパラメータresult_1について詳細な情報が得られることが期待されます。

         CALL xsp2 (?, ?);

    以下のプロシージャ呼び出しは、result_1パラメータが返すデータ型に関する詳細な情報が期待されないため失敗します。

         CALL xsp1 (?, ?);

    以降の例は、BTEQから発行されるCALL文内のOUTパラメータ名のさまざまな指定の仕方を示しています。これらの例は、以下のCREATE PROCEDURE文をベースとしています。

         CREATE PROCEDURE sp2 (OUT po1 INTEGER)
         BEGIN
           SET :po1 = 20;
         END;

    以下のCALL文で、OUT引数名p1は、プロシージャ定義に指定されているOUTパラメータ名po1とは異なっています。

         CALL sp2(p1);
          *** Procedure has been executed.
          *** Total elapsed time was 1 second.

    同じCALL文は、以下の2つの例が示すとおり、明示的なパラメータ指定の代わりにプレースホルダー文字またはホスト変数を指定する場合にも機能します。

         CALL sp2(?);
          *** Procedure has been executed.
          *** Total elapsed time was 1 second.
    
         CALL sp2(:tx1);
          *** Procedure has been executed.
          *** Total elapsed time was 1 second.