スケーラブルデータベースサーバ HiRDB Version 8 SQLリファレンス
DECLARE CURSOR 形式1(カーソル宣言)
機能
問合せ指定の検索結果をFETCH文で1行ずつ取り出すために,カーソルを宣言します。
形式1では,直接指定したカーソル指定に対するカーソルの宣言をします。
使用権限
なし。
形式1<直接指定したカーソル指定に対するカーソルの宣言>
DECLARE カーソル名 CURSOR 〔WITH HOLD〕〔{WITH RETURN | WITHOUT RETURN}〕 FOR 〈カーソル指定 形式1〉 〈問合せ式〉 〈問合せ指定〉 {SELECT 〔{ALL|DISTINCT}〕{選択式〔,選択式〕…|*} 〈表 式〉 FROM 表参照〔,表参照〕… 〔WHERE 探索条件〕 〔GROUP BY 値式〔,値式〕…〕 〔HAVING 探索条件〕 | 問合せ式 } 〔ORDER BY {列指定|ソート項目指定番号}〔{ASC|DESC}〕 〔,{列指定|ソート項目指定番号}〔{ASC|DESC}〕〕… 〕 〔LIMIT {〔オフセット行数,〕{リミット行数|ALL} | {リミット行数|ALL} 〔OFFSET オフセット行数〕}〕 〈排他オプション〉 〔〔{WITH {SHARE|EXCLUSIVE}LOCK |WITHOUT LOCK〔{WAIT|NOWAIT}〕}〕 〔{WITH ROLLBACK|NO WAIT}〕〕 〔FOR{UPDATE 〔OF列名〔,列名〕…〕〔NOWAIT〕|READ ONLY}〕 〔UNTIL DISCONNECT〕 |
オペランド
カーソルの名称を指定します。
UAP中に指定する場合は,SQLの予約語と同じ名称でも,引用符(")で囲まないでください。ただし,SQLの予約語と同じ名称を手続き中に指定する場合は,引用符(")で囲んでください。
カーソル名については,「1.1.7 名前の指定」を参照してください。
ホールダブルカーソルを使用する場合に指定します。
WITH HOLDは,UNTIL DISCONNECTを指定した場合の機能と同じなので,説明はUNTIL DISCONNECTを参照してください。また,この指定がUNTIL DISCONNECTと重複してもしなくても,機能差はありません。
問合せの内容を表すカーソルを指定します。
カーソル指定については「2.1.1 カーソル指定 形式1」を,問合せ式については「2.2 問合せ式」を,問合せ指定については「2.3 問合せ指定」を,表式については「2.5 表式」を,探索条件については「2.7 探索条件」を参照してください。
問合せをする場合の排他制御モードと,ほかのユーザが資源を占有していた場合の処置を指定します。
排他オプションについては,「2.19 排他オプション」を参照してください。
FOR UPDATE 〔OF列名〔,列名〕…〕をFOR UPDATE句といいます。
ホールダブルカーソルを使用する場合に指定します。
この指定をしたときの機能は,WITH HOLDを指定した場合と全く同じです。また,この指定がWITH HOLDと重複してもしなくても,機能差は生じません。
なお,ホールダブルカーソルについては,マニュアル「HiRDB Version 8 UAP開発ガイド」を参照してください。
ホールダブルカーソルについての規則を次に示します。
共通規則
参照制約に関する規則
留意事項
使用例
DECLARE CR1 CURSOR FOR SELECT SCODE,SNAME,COL,TANKA,ZSURYO FROM ZAIKO
DECLARE CR1 CURSOR FOR SELECT * FROM ZAIKO WHERE TANKA >= 5000
DECLARE CR1 CURSOR FOR SELECT * FROM ZAIKO FOR UPDATE OPEN CR1 FETCH CR1 INTO <各列を取り出す変数名> UPDATE ZAIKO SET TANKA = <単価の1割引の値> WHERE CURRENT OF CR1 INSERT INTO ZAIKO VALUES(<各列の挿入値>) CLOSE CR1
DECLARE CR1 CURSOR FOR SELECT * FROM ZAIKO FOR UPDATE OF TANKA OPEN CR1 FETCH CR1 INTO <各列を取り出す変数名> UPDATE ZAIKO SET TANKA = <単価の1割引の値> WHERE CURRENT OF CR1 CLOSE CR1
DECLARE CR1 CURSOR FOR SELECT * FROM ZAIKO FOR READ ONLY OPEN CR1 FETCH CR1 INTO <各列を取り出す変数名> DELETE FROM ZAIKO WHERE SNAME=N'セーター' CLOSE CR1
All Rights Reserved. Copyright (C) 2006, 2016, Hitachi, Ltd.