例: CLOB値を半分に分割し、それぞれを2つの異なるテーブルに挿入する - Teradata Database - Teradata Vantage NewSQL Engine - 例: CLOB値を半分に分割し、それぞれを2つの異なるテーブルに挿入する、CREATE PROCEDURE (SQL形式)およびREPLACE PROCEDURE (SQL形式) SQL文

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/wkf1512081455740.ditamap
dita:ditavalPath
ja-JP/wkf1512081455740.ditaval
dita:id
B035-1144
Product Category
Software
Teradata Vantage

次の例は、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はそのプロシージャに渡されます。