16.20 - compound statement - Teradata Database - Teradata Vantage NewSQL Engine

Teradata Vantage™ SQLデータ定義言語 構文規則および例

Product
Teradata Database
Teradata Vantage NewSQL Engine
Release Number
16.20
Release Date
2019年3月
Content Type
プログラミング リファレンス
Publication ID
B035-1144-162K-JPN
Language
日本語 (日本)

宣言と文のセットを囲むBEGIN-END文。

複合文には、ローカル変数宣言、カーソル宣言、条件ハンドラ宣言、SQL文および制御文を指定できます。

複合文の入れ子は可能です。

例: XMLデータを含むCLOBをテーブルに挿入するための行に変換

次の例は、XMLの販売データを含むCLOB値をsales表に挿入する行のセットに変換するプロシージャを作成します。

まずテーブルを定義します。

    CREATE TABLE sales (
      partnum   INTEGER, 
      qtysold   INTEGER, 
      storecode INTEGER, 
      salesdate DATE)
    PRIMARY INDEX (partnum, qtysold, storecode, salesdate);
    CREATE TABLE saleslog (
      storecode INTEGER, 
      salesdate DATE, 
      sales     CLOB, 
      logdate   DATE, 
      logtime   TIME)
    PRIMARY INDEX (storecode, salesdate, logdate, logtime);

次のSQLコードは、プロシージャを定義します。

    CREATE PROCEDURE stores_sales_procedure (storecode INTEGER, 
                                             salesdate DATE, 
                                             salesclob CLOB)
      BEGIN
        INSERT INTO saleslog (:storecode, :salesdate, :salesclob,
                              CURRENT_DATE, CURRENT_TIME);
        INSERT INTO sales 
          SELECT * FROM TABLE (xmlparser(:salesclob));
      END;

上記の手順の次に以下のステップが続きます。

  1. 販売CLOBがsaleslogという名前のログ テーブルに挿入されます。
  2. CLOBは変数salesclobによってxmlparserという名前のユーザー定義テーブル関数に渡されます(CREATE FUNCTIONおよびREPLACE FUNCTION(テーブル形式)を参照してください)。
  3. システムはAMPごとにテーブル関数xmlparserを呼び出します。
  4. テーブル関数はfnc_loblocalを呼び出して(この例ではxmlparserfnc_loblocalの定義は示していない)、関数が実行されているのと同じAMP上にCLOBがあるかどうかを検出します。
  5. CLOBにローカルでアクセスする関数はXML販売データを除去し、sales表に挿入される標準のリレーショナル テーブルの行を返します。