例: BTEQとCLIv2の入力/出力引数 - Teradata Database - Teradata Vantage NewSQL Engine - 例: BTEQとCLIv2の入力/出力引数

Teradata Vantage™ SQLデータ操作言語

Product
Teradata Database
Teradata Vantage NewSQL Engine
Release Number
16.20
Published
2019年3月
Language
日本語
Last Update
2019-10-29
dita:mapPath
ja-JP/fbo1512081269404.ditamap
dita:ditavalPath
ja-JP/fbo1512081269404.ditaval
dita:id
B035-1146
Product Category
Software
Teradata Vantage

パラメータの型を表示して確認するには、SQL SHOW PROCEDURE文を使用できます。

     CREATE PROCEDURE spSample2(OUT p1 INTEGER, INOUT p2 INTEGER, 
     IN p3 INTEGER)
      BEGIN
         SET p1 = p3;
         SET p2 = p2 * p3;
      END;

呼び出し引数は、以下のいずれかの書式で指定できます。

書式1:

     CALL spSample2(p1, 20, 3);

パラメータ名p1は、OUTパラメータのプレースホルダーなので引数として指定しています。20と3という値は、INOUTパラメータとINパラメータ、つまりp2p3の引数として渡されます。

このCALL文からは、以下のような応答が返されます。

                 p1           p2
        -----------  -----------
                  3           60

書式2:

     CALL spSample2(p1, 20 * 2, 30 + 40);

(20 * 2)および(30 + 40)という式は、INOUTパラメータとINパラメータ、つまりp2p3の引数として渡されます。

このCALL文からは、以下のような応答が返されます。

     
              p1           p2
     -----------  -----------
              70         2800

書式3:

     CALL spSample2(CAST(CAST(p1 AS CHARACTER(10)) AS TITLE      'OutputValue'), CAST(20 AS SMALLINT), 30 + 40);

CAST(20 AS SMALLINT)および(30 + 40)という式は、INOUTパラメータとINパラメータ、つまりp2p3の引数として渡されます。

このCALL文からは、以下のような応答が返されます。

     OutputValue      20
     -----------  ----------
     70               1400

書式4:

この書式は、BTEQで使用されますが、データ ファイルからデータをインポートすることが前提になります。

     USING (a INTEGER) CALL spSample1(p1, :a, 3);

3は、INパラメータであるp3の引数として渡される値です。入力データ ファイルから読み込まれる値は変数aに代入され、USING句によってINOUTパラメータであるp2の引数として渡されます。

BTEQは、Teradataプラットフォームから以下の応答を受け取ります。

              p1          p2
     -----------  -----------
               3          30

書式5(CALLリクエストでNAMED句とTITLE句を使った場合):

     CALL spSample1(CAST (p1 AS NAMED AA TITLE 'OUT VALUE'),
     CAST (((20 * 2) + 3) AS TITLE 'INOUT VALUE'), 1);

応答は以下のようになります。

       OUT VALUE  INOUT VALUE
     -----------  ------------
               1            43