高速トランザクション処理基盤 TP1/EE/Extended Data Cache SQLプログラミング
![[目次]](FIGURE/CONTENT.GIF)
![[索引]](FIGURE/INDEX.GIF)
![[前へ]](FIGURE/FRONT.GIF)
問合せ指定の検索結果をFETCH文で1行ずつ取り出すために,カーソルを宣言します。
カーソル宣言::=DECLARE カーソル名 CURSOR FOR カーソル指定
|
カーソルの名称を指定します。
- 宣言したカーソルは,閉じた状態になります。
- DECLARE CURSOR中のカーソル指定で指定した埋め込み変数の値は,カーソルを開いてからカーソルを閉じるまで,このカーソルのOPEN文を実行したときの値が有効です。値を変更する場合は,いったんカーソルを閉じてから,再度開いてください。
- 1個のUAPでは,最大1023個のカーソルを宣言できます。
- カーソル名は,埋め込み変数名と同様に,コンパイル単位のモジュール内で有効な名前です。同じカーソルに対する複数のSQLを,複数のモジュールにわたって使用できません。したがって,SQL中にカーソル名を指定している場合は,そのカーソル名をプリプロセスするUAPソース中で宣言する必要があります。
- カーソル宣言は,この宣言で使用したカーソル名を参照するどのSQL文よりも先行して記述する必要があります。
- DECLARE CURSORを実行しても,SQLCODEにリターンコードは返されません。したがって,リターンコードの判定はしないでください。
- (例1)
- 在庫表(ZAIKO)から,行を1行ずつ取り出すためにカーソル(CR1)を宣言します。
DECLARE CR1 CURSOR FOR
SELECT SCODE,SNAME,COL,TANKA,ZSURYO
FROM ZAIKO
- (例2)
- 在庫表(ZAIKO)から,単価(TANKA)が5000円以上の行を1行ずつ取り出すためにカーソル(CR1)を宣言します。
DECLARE CR1 CURSOR FOR
SELECT * FROM ZAIKO
WHERE TANKA >= 5000
- (例3)
- カーソル(CR1)を使用して在庫表(ZAIKO)のすべての行を検索中に,カーソルを使用しないで,直接,商品名(SNAME)がセーターの行を削除します。
DECLARE CR1 CURSOR FOR
SELECT * FROM ZAIKO
OPEN CR1
FETCH CR1 INTO <各列を取り出す変数名>
DELETE FROM ZAIKO
WHERE SNAME='セーター'
CLOSE CR1
All Rights Reserved. Copyright (C) 2008, Hitachi, Ltd.