いつもお世話になっております。
takkoです。
本日はCURSOR変数の扱い方についてお聞きしたいことがありましたので、
質問させていただきます。
PL/SQL初心者なので、基礎から教えていただきたいと思います。
下記記述があったとします。(自分で試しに作りましたが、動作確認が出来る環境に無いためデバックは出来ていません。)
PL/SQL
1tmpHoge CHAR(1); 2PrmHoge CHAR(1); 3 4CURSOR cur IS 5 SELECT HogeMst.HogeFlg --1の記述 6 FROM HOGE_MAST HogeMst --1の記述 7 WHERE HogeMst.Id = '000001' --1の記述 8BEGIN 9 OPEN cur; 10 FETCH cur INTO tmpHoge; 11 CLOSE cur; 12END; 13 14IF tmpHoge = '1' Then PrmHoge = '1' 15ELSE PrmHoge = '0' 16END IF;
インターネットで調べてみたところ、CURSOR変数は
一行のみを返す問い合わせを含む、一連の行にあるすべてのSQLデータ操作分に対して暗黙的にカーソルが宣言されます。
とあります。
下記:参照URL
http://winofsql.jp/VA003334/infoboard_page.php?mid=plsql&id=080601161410
これはつまりどういう意味ですか?
今回の--1の記述でSELECTできる行はIdによる主キーの検索で、
データ行が一行しか無い想定となっていますが、
CURSORで宣言したcurはSELECTした項目のデータだけ抽出してくれているのでしょうか。
上記のコードでやりたいことは、
マスタ参照して、'000001'のIdを持つ行のフラグを確認し、
"1"が立っていれば、変数に"1"を代入、立って居なければ"0"を代入ということをしたいのですが、
私の予想が正しいのであればcurはCHAR型ではなく配列型になっているはず(?)なので、
INTOによるtmpHogeへの代入は不可能で、cur(0)としなければならないのかな?と
思ったりしています。
FETCHとINTOの使い方が正しいのかも定かではないのですが、
このコードで動作させた場合は、tmpHogeへのINTOは正しく動くのでしょうか。
以上、よろしくお願い致します。
補足
HogeMst.HogeFlgはCHAR(1)です。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。