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