3.2.4 SQLを使用した検索方法の分類
SQLを使用して表を検索する場合,大別するとSQLの静的実行と動的実行に分類できます。SQLを使用したときのUAPからの検索方法の分類を次の表に示します。
検索方法 |
問合せ内容を指定するSQL |
|
---|---|---|
埋込み型UAP |
静的SQL |
1行SELECT文 |
カーソル宣言 |
||
動的SQL |
1行SELECT文 |
|
動的SELECT文 |
- 〈この項の構成〉
(1) 1行SELECT文
表から1行だけ検索結果を取り出すには,1行SELECT文を使用します。
1行SELECT文を使用すると,カーソルを使用する必要がないため,一つのSQLで検索できます。
1行SELECT文は,次の場合に使用すると有効です。また,UAP実行時に組み立てた1行SELECT文を動的に実行することもできます。
-
検索結果が1行以下になることが明確な場合
-
グループ分け(GROUP BY句)をしないで集合関数を使用する場合
なお,1行だけの検索の場合でも,検索した行を更新したり,削除したりするときは,カーソルを使用する方が処理効率が良いので,場合によって使い分ける必要があります。
(2) カーソル宣言
検索結果が複数行になる場合,UAPでは一度に受け取れないため,カーソルを使用して1行ずつ取り出します。カーソルの宣言から検索の終了までの流れは,次に示すとおりです。
-
DECLARE CURSORでカーソル宣言をします。
-
OPEN文を実行すると,カーソルが開いて使用できる状態になります。
-
FETCH文を実行すると,カーソルが検索結果の1行目を指すので,埋込み変数,又はパラメタ(FETCH文のINTO句で指定した)を使用して検索結果を取り出します。
-
再度FETCH文を実行すると,カーソルが次の行へ進むので,1行ずつ検索結果を取り出します。
-
検索する行がなくなるまで 4. の操作を繰り返します。
-
検索が終了したら,CLOSE文を実行してカーソルを閉じます。