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

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

Product
Advanced SQL Engine
Teradata Database
Release Number
17.05
Release Date
2021年1月
Content Type
プログラミング リファレンス
Publication ID
B035-1146-175K-JPN
Language
日本語 (日本)
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.