例: UDTを使用したSQLプロシージャの作成 - Advanced SQL Engine - Teradata Database

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

Product
Advanced SQL Engine
Teradata Database
Release Number
17.10
Published
2021年7月
Language
日本語
Last Update
2021-09-23
dita:mapPath
ja-JP/spp1591731285373.ditamap
dita:ditavalPath
ja-JP/wrg1590696035526.ditaval
dita:id
B035-1144
Product Category
Software
Teradata Vantage

次の例および例の抜粋は、SQLプロシージャ内のUDTのさまざまな適用を示しています。

カーソル取出し:

    OPEN cursor1;
    LSUB1:
    LOOP
      FETCH cursor1 INTO predefinedcol, distincttype, structuredtype;
      IF(SQLSTATE <> 0) THEN  LEAVE LSUB1;
      END IF;
      SET rowcount = rowcount +1;
      INSERT INTO resultstable VALUES(:rowcount, :predefinedtype,      :distincttype,
     :structuredtype.attribute1(), 'FETCH');
    END LOOP;
    CLOSE Cursor1;

STRUCTURED型の宣言:

    CREATE PROCEDURE sp1()
     BEGIN
      DECLARE var1 INTEGER;
      DECARE var2  VARCHAR(300);
      DECLARE structuredtype  STATEUDT;
      SET var1 = 92069;
      SET var2 = 'California";
     INSERT INTO T1 VALUES (var1, structuredtype.state(var2));

SET式でのミュテーター メソッドの使用:

    UPDATE resultstable SET structuredcol=:structuredtype.attribute1();

CREATE PROCEDURE:

    CREATE PROCEDURE ups02(IN pi udtint)
     BEGIN
      FOR fcode AS b_code CURSOR WITHOUT RETURN FOR
       SELECT udt2 FROM tab2 WHERE col1 = :pi.method1()
      DO
       UPDATE tab2 
       SET col2 = :fcode.udt2.method1() 
       WHERE col1  = :pi.method1()
      ELSE
       INSERT INTO tab2(:pi, :fcode.udt2.method1());
      END FOR;
    END;

CREATE PROCEDURE:

    CREATE PROCEDURE cas01 (OUT p1 insv_structured_date)
     BEGIN
      DECLARE vudt insv_structured_date AS NEW insv_structured_date();
       SET p1= NEW insv_structured_date(CAST('02/02/02' AS DATE));
    END;

UDTとプロシージャ制御言語機能との対話方法の詳細は、<Teradata Vantage™ - SQLストアド プロシージャおよび埋め込みSQL、B035-1148>を参照してください。