次の例および例の抜粋は、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>を参照してください。