例: 条件文と繰り返し文を使用したSQLプロシージャの作成 - 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

このプロシージャは、長方形の領域が入力長方形の領域と同じで、その背景色が青になっていない場合に、その背景色を青に設定します。長方形および古い背景色はテーブルに記録されます。

    CREATE PROCEDURE SP1(IN p1 rectangle)
      BEGIN
        DECLARE var1 rectangle;             /* UDT local variable */
        DECLARE var2 VARCHAR(20);
        DECLARE var3 INTEGER;
        DECLARE var4 FLOAT;
        DECLARE rect_cursor CURSOR WITHOUT RETURN FOR
          SELECT rect_col, background_color, id 
          FROM table1 FOR UPDATE;
        SET var4 = p1.area();                    /* UDT expression */
    /* DDL */
     CREATE TABLE LogTab(
       id         INTEGER, 
       Rect       rectangle, 
       OldBGColor VARCHAR(20));
     L1: LOOP
      FETCH RectCursor INTO var1, var2, var3;   /* Fetch into UDT var */
       IF (SQLCODE <> 0) THEN
        LEAVE L1;
       END IF;
       IF (var1.area() = var4  AND  var2 <> 'Blue') THEN 
        BEGIN TRANSACTION;
          INSERT INTO LogTab 
           VALUES (:var3, :var1, :var2); 
          UPDATE Employee 
           SET BackgroundColor = 'Blue'
           WHERE CURRENT OF RectCursor;
        END TRANSACTION;
      END IF;
     END LOOP L1;
    END;