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

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

Product
Advanced SQL Engine
Teradata Database
Release Number
17.05
Published
2021年1月
Language
日本語
Last Update
2021-03-30
dita:mapPath
ja-JP/ncd1596241368722.ditamap
dita:ditavalPath
ja-JP/ncd1596241368722.ditaval
dita:id
B035-1144
Product Category
Software
Teradata Vantage

次の例は、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テーブルに挿入される標準のリレーショナル テーブルの行を返します。