スケーラブルデータベースサーバ HiRDB Version 8 UAP開発ガイド
カーソルを使用した例を次に示します。
在庫表(ZAIKO)から,カーソル(CR1)を使用してすべての行を検索しながら単価(TANKA)を1割引きにします。
:
EXEC SQL BEGIN DECLARE SECTION;
char xscode[5]; ...................................1
char xsname[17]; .................................1
char xcol[3]; .....................................1
int xtanka; .......................................1
int xzsuryo; .....................................1
EXEC SQL END DECLARE SECTION;
:
EXEC SQL DECLARE CR1 CURSOR FOR
SELECT * FROM ZAIKO
FOR UPDATE OF TANKA; .........................2
EXEC SQL OPEN CR1; .................................3
EXEC SQL FETCH CR1
INTO :xscode,:xsname,:xcol,:xtanka,:xzsuryo; .....4
EXEC SQL UPDATE ZAIKO
SET TANKA=0.9*:xtanka
WHERE CURRENT OF CR1; ...........................5
EXEC SQL CLOSE CR1; .................................6
:
在庫表(ZAIKO)から,カーソル(CR1)を使用してすべての行を検索しながら更新し,更にカーソル(CR1)を使用しないで行を挿入します。
:
EXEC SQL BEGIN DECLARE SECTION;
char xscode[5]; ....................................1
char xsname[17]; ....................................1
char xcol[3]; ......................................1
int xtanka; ........................................1
int xzsuryo; ........................................1
EXEC SQL END DECLARE SECTION;
:
EXEC SQL DECLARE CR1 CURSOR FOR
SELECT * FROM ZAIKO
FOR UPDATE; ....................................2
EXEC SQL OPEN CR1; ....................................3
EXEC SQL FETCH CR1
INTO :xscode,:xsname,:xcol,:xtanka,:xzsuryo; .......4
EXEC SQL UPDATE ZAIKO
SET SURYO=:xzsuryo+100
WHERE CURRENT OF CR1; ............................5
EXEC SQL INSERT INTO ZAIKO
VALUES(:xscode,:xsname,:xcol,:xtanka,:xzsuryo); ...6
EXEC SQL CLOSE CR1; ..................................7
:
在庫表(ZAIKO)から,カーソル(CR1)を使用してすべての行を検索しながら,単価(TANKA)を50%にします。カーソル(CR1)はそのまま閉じないで,カーソル(CR1)を使用した別の操作をします。
:
EXEC SQL BEGIN DECLARE SECTION:
char xscode[5]; .................................1
char xsname[17]; .................................1
char xcol[3]; ...................................1
int xtanka; .....................................1
int xzsuryo; .....................................1
END DECLARE SECTION;
:
EXEC SQL LOCK TABLE ZAIKO
IN EXCLUSIVE MODE UNTIL DISCONNECT; ...........2
:
EXEC SQL DECLARE CR1 CURSOR WITH HOLD FOR
SELECT * FROM ZAIKO
FOR UPDATE OF TANKA .........................3
EXEC SQL OPEN CR1; .................................4
EXEC SQL FETCH CR1
INTO :xscode,:xsname,:xcol,:xtanka,:xzsuryo; ....5
EXEC SQL UPDATE ZAIKO SET TANKA=0.5*:xtanka
WHERE CURRENT OF CR1; .........................6
<1000行単位に次のCOMMIT文を実行する判定> ...........7
EXEC SQL COMMIT; ...................................8
<更新する行がなくなった場合は次のCLOSE文を実行> ....9
EXEC SQL CLOSE CR1; ..............................10
:
All Rights Reserved. Copyright (C) 2006, 2016, Hitachi, Ltd.