Hitachi

ノンストップデータベース HiRDB Version 10 UAP開発ガイド


3.2.4 SQLを使用した検索方法の分類

SQLを使用して表を検索する場合,大別するとSQLの静的実行と動的実行に分類できます。SQLを使用したときのUAPからの検索方法の分類を次の表に示します。

表3‒3 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行だけの検索の場合でも,検索した行を更新したり,削除したりするときは,カーソルを使用する方が処理効率が良いので,場合によって使い分ける必要があります。

(2) カーソル宣言

検索結果が複数行になる場合,UAPでは一度に受け取れないため,カーソルを使用して1行ずつ取り出します。カーソルの宣言から検索の終了までの流れは,次に示すとおりです。

  1. DECLARE CURSORでカーソル宣言をします。

  2. OPEN文を実行すると,カーソルが開いて使用できる状態になります。

  3. FETCH文を実行すると,カーソルが検索結果の1行目を指すので,埋込み変数,又はパラメタ(FETCH文のINTO句で指定した)を使用して検索結果を取り出します。

  4. 再度FETCH文を実行すると,カーソルが次の行へ進むので,1行ずつ検索結果を取り出します。

  5. 検索する行がなくなるまで 4. の操作を繰り返します。

  6. 検索が終了したら,CLOSE文を実行してカーソルを閉じます。

(3) 動的SELECT文

SQLの動的実行によって検索結果を複数行取り出すには,動的SELECT文を使用します。動的SELECT文で検索結果を取り出すには,あらかじめカーソル宣言をしておくか,又はALLOCATE CURSOR文でカーソルを割り当てておく必要があります。カーソル宣言,又はカーソル割り当てをしておくと,UAP実行時に組み立てたSQL文をPREPARE文で前処理した後は,通常のカーソルを使用した検索と同様の操作ができます。