2.1.2 カーソル指定 形式2
(1) 機能
リストを介して表を検索するときに指定します。
リストを介した表の検索に対するカーソル指定は,動的SELECT文中に指定します。
動的SELECT文については,操作系SQLの「動的SELECT文 形式1(動的検索)」を参照してください。
(2) 使用権限
実表に対するSELECT権限を持つユーザが,リストを介してその実表を検索するカーソル指定 形式2を実行できます。
(3) 形式
SELECT {{値式|WRITE指定|GET_JAVA_STORED_ROUTINE_SOURCE指定} 〔〔AS〕 列名〕 〔,{値式|WRITE指定|GET_JAVA_STORED_ROUTINE_SOURCE指定} 〔〔AS〕 列名〕〕… |*} FROM LIST リスト名 〔ORDER BY{列名|ソート項目指定番号}〔{ASC|DESC}〕 〔,{列名|ソート項目指定番号}〔{ASC|DESC}〕〕… 〕 〔LIMIT {〔オフセット行数,〕{リミット行数|ALL} | {リミット行数|ALL} 〔OFFSET オフセット行数〕}〕
(4) オペランド
-
{{値式|WRITE指定|GET_JAVA_STORED_ROUTINE_SOURCE指定}〔〔AS〕 列名〕
〔,{値式|WRITE指定|GET_JAVA_STORED_ROUTINE_SOURCE指定}〔〔AS〕 列名〕〕…
|*}
- 値式
-
検索する値式を指定します。
SELECT句の値式についての規則を次に示します。
-
列名には検索するリストの基表の列名を指定します。
-
繰返し列には検索するリストの基表の繰返し列を指定します。
-
繰返し列を単独で指定する場合,添字にANYは指定できません。
-
属性名には検索するリストの基表の抽象データ型の属性を指定します。
-
SELECT句の値式中に次のものは指定できません。
-
リストの基表の予備列
-
基表の列指定中の表指定
-
基表(の列)に対する外への参照
-
集合関数
-
ウィンドウ関数
-
副問合せ
-
-
プラグイン提供関数の受渡し値送信関数の指定なしで,一部の受渡し値受信関数を指定できます。指定できる受渡し値受信関数については,マニュアル「HiRDB UAP開発ガイド」,及び各種プラグインマニュアルを参照してください。
-
プラグイン提供関数の受渡し値受信関数は二つ以上指定できません。
- WRITE指定
-
BLOBデータの検索結果をファイル出力する場合に指定します。WRITE指定については,「WRITE指定」を参照してください。
- GET_JAVA_STORED_ROUTINE_SOURCE指定
-
JARファイルからJavaクラスのソースファイルを抽出する場合に指定します。GET_JAVA_STORED_ROUTINE_SOURCE指定については,「GET_JAVA_STORED_ROUTINE_SOURCE指定」を参照してください。
- 〔AS〕 列名
-
値式,WRITE指定,又はGET_JAVA_STORED_ROUTINE_SOURCE指定に対して名称を付ける場合に指定します。
- *
-
リストの基表のすべての列を検索します。
-
リスト名
検索する集合を格納したリストの名前を指定します。
-
ORDER BY{列名|ソート項目指定番号}{ASC|DESC}
ORDER BY句の規則については形式1を参照してください。
-
LIMIT {〔オフセット行数,〕{リミット行数|ALL}| {リミット行数|ALL} 〔OFFSET オフセット行数〕}
LIMIT句の規則については形式1を参照してください。
(5) 共通規則
-
リスト作成時にあった行が検索時にない場合には,SQLCODE+110を返します。この場合,検索は続行します。ただし,次に示すどちらかの場合にはSQLCODE+110は返しません。
-
受渡し値受信関数の引数以外にリストの基表の列名の指定がなく,かつリストの基表の列の*の指定がない
-
ORDER BY句の指定がある
-
-
LIMIT句にオフセット行数の指定がある場合,SQLCODE+110を返す行を読み飛ばす行数に含めます。
-
LIMIT句にリミット行数の指定がある場合,SQLCODE+110を返す行を取得する行数に含めます。
-
同一ユーザが,複数同時にHiRDBと接続してリストを操作できません。
(6) 留意事項
-
リスト作成後に基表の行を削除した場合,検索時にその行は検索されません。ただし,選択式に次に示すものだけを指定した場合,基表の行の削除前のデータが検索されます。
-
基表の列名を含まない値式
-
受渡し値受信関数
-
-
リスト作成後に基表の行を更新した場合,更新後のデータが検索されます。ただし,選択式に指定した受渡し値受信関数については,基表の行の更新前のデータが検索されます。
-
リスト作成後に,基表の行を削除してから行を挿入した場合,挿入した行が検索されることがあります。
-
リストを介して表を検索するSQLを,PREPARE文で前処理してからOPEN文を実行するまでの間に,同一リスト名のリストを作成するASSIGN LIST文は実行しないでください。
-
WRITE指定をする場合,第一引数には基表のBLOB型の列名,又は抽象データ型のBLOB型の属性名を指定できます。
(7) 指定例(カーソル宣言中でカーソル指定を指定した場合)
PREPARE P1 FROM 'SELECT SCODE,SNAME FROM LIST LIST1' DECLARE CRL1 CURSOR FOR P1