|
FETCH ステートメントにより、指定したテーブル行に SQL カーソルを位置付け、ターゲット リストに値を入れる変数を配置して、その行から値を取り出します。
カーソルからデータをフェッチする場合は、NEXT および FROM キーワードの使用は選択できません。
メモ
Pervasive PSQL は前方スクロール タイプのカーソルのみサポートします。そのため、NEXT FROM を省略しても、カーソル レコードの流れを制御することはできません。
この例の FETCH ステートメントでは、カーソル c1 からの値が OldName 変数に取り込まれます。また、位置付け UPDATE ステートメントにより、同じ DEMODATA サンプル データベース内の Course テーブルの Modern European History(HIS 305)の行が更新されます。
CREATE PROCEDURE UpdateClass(); BEGIN DECLARE :CourseName CHAR(7); DECLARE :OldName CHAR(7); DECLARE c1 cursor FOR SELECT name FROM course WHERE name = :CourseName; OPEN c1; SET :CourseName = 'HIS 305'; FETCH NEXT FROM c1 INTO :OldName; UPDATE SET name = 'HIS 306' WHERE CURRENT OF c1; END;
CREATE PROCEDURE MyProc(OUT :CourseName CHAR(7)) AS BEGIN DECLARE cursor1 CURSOR FOR SELECT Degree, Residency, Cost_Per_Credit FROM Tuition ORDER BY ID; OPEN cursor1; FETCH NEXT FROM cursor1 INTO :CourseName; CLOSE cursor1; END
|