申し訳ありませんが、質問の名前が間違っています。より具体的な例をお伝えします。ループの各反復のデータを格納し、それらをすべて参照カーソルに戻しますか?
var1 VARCHAR(20);
var2 VARCHAR(20);
--MYRECORD CONTAINS COLUMNS ELEMENT0, VAL
FOR MYRECORD IN EXPLICITCURSOR LOOP
SELECT COL1, COL2 INTO var1, var2 FROM table1 WHERE table1.COLUMNT=MYRECORD.VAL;
END LOOP;
ご覧のとおり、私にはループがあり、その内側にはSELECTがあります。今、テストのために、私は毎回上書きされる2つの変数に結果を保存しています。 私は各反復(ELEMENT0、COL1、COL2)を保存する必要があり、REF CURSORを使って出力します。
EDIT1:私は、レコードタイプとレコードタイプを定義する可能性についてこの瞬間を見ています。誰かが私の場合の例を教えてもらえますか?出力パラメータとしてテーブルを設定する際に問題があります。 これは私がパッケージの冒頭で準備したものです。
TYPE my_record is RECORD(
ELEMENT0 varchar2(20),
COL1 varchar2(20),
COL2 varchar2(20));
TYPE my_table IS TABLE OF my_record;
と今の私は、このように私の手順については、OUTパラメータを使用しています:私はLOOPの各反復での私のOUTのparamの内側に私の3つのvarchar型の値を挿入しようとしている
TABLERESULT OUT my_table
この方法(値が正しくsettedされている):
INSERT INTO TABLERESULT(ELEMENT0,COL1,COL2) VALUES(ELEMENT0,COL1,COL2);
、それは私にエラーを与える:
PL/SQL: ORA-00942: table or view does not exist
このタイプのOUTパラメータを使用して何か間違っていますか?
提案がありますか?ありがとうございました。 (私はOracle 11gを使用しています)
EDIT2:@ APCの助けを借りて、命名エラーとコンパイラが問題を起こさないことがわかりました。私は続行し、私はあなたに知らせるでしょう。
保存場所はどこですか?テーブル?ファイル? –
"保存"とは、配列のようなものにこれらの3つのvarchar2値を格納し、それらのすべてをプロシージャ呼び出し元に参照カーソルで戻す方法が必要なことを意味します。あなたはそれを行う方法をアドバイスできますか? –
一時テーブルに挿入しますか? –