カーソルは、結果セットへの単なるポインタです。その内容を参照するには、fetch
が必要です。変数は、クエリの投影に一致するレコードタイプでなければならないことに注意してください。動的SQLを使用して流体の列セットを実装している場合、これは難しい場合があります。とにかく
、このような何か:
declare
cur1 sys_refcursor;
Type cur_rec is record (
rule_id number,
rule_desc varchar2(32));
row1 cur_rec;
....
Begin
...
open cur1 for stmt;
for row1 in cur1 loop
Dbms_output.put_line(row1.rule_id);
End loop;
....
End;
「私は結果のカラムの種類がわからない場合、私はカーソル値をキャプチャするために、変数を作成することはできません」
コンパイル時にクエリの予測がわからない場合、人生はより複雑になります。ネイティブ動的SQLを使用することはできません。完全なDBMS_SQLを実行する必要があります。
11gでは、いわゆるメソッド4動的SQLが導入されました。これにより、より多くのコードを犠牲にして、さまざまな予測を処理することができます。 Adrian Billington氏は、彼のOracle-developer.netサイトで優れた紹介を書いています。 Check it out
出典
2017-06-28 08:58:08
APC
こんにちは@APC参照してください。私は、結果の列の種類がわからない場合、私は、変数を作成することはできません...おかげでたくさんの時間を取るためにカーソルの値をキャプチャする..それは? – thealchemist
人生はますます難しくなります。どのOracleのバージョンを使用していますか? – APC
私はバージョン4.1.5を使用しています:) – thealchemist