17.10 - 例: CLOB値を半分に分割し、それぞれを2つの異なるテーブルに挿入する - Advanced SQL Engine - Teradata Database

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

Product
Advanced SQL Engine
Teradata Database
Release Number
17.10
Release Date
2021年7月
Content Type
プログラミング リファレンス
Publication ID
B035-1144-171K-JPN
Language
日本語 (日本)

次の例は、CLOBを半分に分割してから、それぞれを2つの異なるテーブルに挿入する際に使用するSQLプロシージャを示しています。

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

    CREATE TABLE tabc1 (
      a1 INTEGER, 
      b1 CLOB);
    CREATE TABLE tabc2 (
      a2 INTEGER, 
      b2 CLOB);

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

    CREATE PROCEDURE clobsplitter(IN    a1 INTEGER, 
                                  IN    a2 INTEGER, 
                                  INOUT b  CLOB )
          BEGIN
             DECLARE localclob CLOB;
             DECLARE len INTEGER;
             SET len = CHARACTERS(b);
             SET localclob = SUBSTR(b, 1, len/2);
             INSERT tabc1 (:a1, localclob);
             INSERT tabc2 (:a2, SUBSTR(b, len/2 + 1));
             SET b = localclob || SUBSTR(b, len/2 + 1);
          END;

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

  1. CLOB bの最初の半分がlocalclobという名前のローカル変数に割り当てられます。
  2. CLOBの内容がtabc1表に挿入されます。
  3. CLOB bの後半部分が、ローカルLOB変数を使用せずにtabc2表に挿入されます。
  4. ローカル変数localclobbの後半部分と連結され、bに割り当てられます。
  5. bの内容がアプリケーションに返されます。

    別のプロシージャによってclobsplitterが呼び出される場合、bはそのプロシージャに渡されます。