■ カーソル
- SQL文の結果が複数行になる場合で、プログラムの要求により、1行毎に処理する必要がある場合に、カーソルを使用する。
カーソルの定義(DECLARE CURSOR文)
- カーソルを使用するには、まずカーソルを定義する。
DECLARE CURSORの構文
DECLARE カーソル名 CURSOR FOR SELECT文;
カーソルの操作
- カーソルの操作には、OPEN、FETCH、CLOSEがある。
命令 | 説明 |
---|---|
OPEN | カーソルを開く命令 |
FETCH | カーソルのさす行からデータを変数に取り出して、次の行に進む命令 |
CLOSE | カーソルを閉じる命令 |
- 操作の流れとしては、OPEN → FETCH → CLOSE となる。
以下のテーブルを参考に説明する。
[テーブル]
項番 | 氏名 |
---|---|
0001 | ホムペ太郎 |
0002 | ブログ次郎 |
0003 | ソシャ三郎 |
OPEN命令の構文
OPEN カーソル名;
[テーブル]
項番 | 氏名 |
---|---|
→0001 | ホムペ太郎 |
0002 | ブログ次郎 |
0003 | ソシャ三郎 |
→:カーソルの指す行
FETCH命令の構文
FETCH カーソル名 INTO 変数名;
[テーブル]
項番 | 氏名 |
---|---|
0001 | ホムペ太郎 |
→0002 | ブログ次郎 |
0003 | ソシャ三郎 |
→:カーソルの指す行
項番 | 氏名 |
---|---|
0001 | ホムペ太郎 |
この行を変数に取り出して、次の行へ移動
CLOSE命令の構文
CLOSE カーソル名;
カーソルによるデータ更新のSQL文
UPDATE テーブル名 SET 列名1 = 値1,列名2 = 値2,… WHERE CURRENT OF カーソル名;
カーソルによるデータ削除のSQL文
DELETE FROM テーブル名 WHERE CURRENT OF カーソル名;
【試験対策】
- カーソルには、定義構文と、3つの操作構文がある。
- カーソルの現在位置を指定するには、CURRENT OF カーソル名とする。