2.3.1 1個の表からの検索
1個の表からの検索例として,在庫表の中から商品名が"スカート"の行だけをSELECT文で検索するときの例を次の図に示します。
表の検索結果は表形式になり,処理要求したUAPに渡されます。
検索結果の表をUAPから参照するためには,カーソルを使用します。カーソルには,検索結果の表の特定の行を指す機能があるので,UAPはカーソルの指している行の内容を読み出して加工できます。
検索結果の表に対するUAPからのデータの処理手順を次の図に示します。
次に図「検索結果の表に対するUAPからのデータの処理手順」で示した処理手順の各ステップを説明します。
-
カーソルを使用するために,カーソルの名称,そのカーソルを使用して検索する表の名称,及び探索条件を定義します。例えば,図「1個の表からの検索」に示す例に当てはめて考えた場合,カーソル名称を「CUR1」として,在庫表から"スカート"だけを探索するときは,次のように定義します。
DECLARE CUR1 CURSOR FOR SELECT SNAME,COL,TANKA FROM ZAIKO WHERE SNAME=N'スカート'
-
カーソルを開くと,定義した条件に従って検索結果を取り出せる状態になります。検索結果は,システム内に表形式で格納され,カーソルを閉じるまで有効です。
カーソルを開くには,次のように記述します。
OPEN CUR1
カーソルを開いた直後は,表の第1列の第1行目の一つ上にカーソルがあります。カーソル名称が「CUR1」で,在庫表から"スカート"を検索する条件にしたとき,カーソルを開いた直後の状態を次の図に示します。
図2‒7 カーソルを開いた直後の状態 -
FETCH文を使用し,カーソルを開いた状態の位置から1行進めて,その行の内容をUAP内の指定した領域に格納します。
カーソルを開いた直後の状態から,検索した内容がUAPの領域に格納される例を次の図に示します。
図2‒8 検索した内容を取り出してUAPの領域に格納する例 -
データの処理
UAP上の領域に格納されたデータの内容を必要に応じて出力します。
-
検索結果に対するUAPのデータ処理が完了したらカーソルを閉じます。
カーソルを閉じると,システム内に保存されていた検索結果の表は消去されます。カーソルを閉じるには,次のように記述します。
CLOSE CUR1