スケーラブルデータベースサーバ 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.