数値nをとり、指定されたクエリの最初のn個の結果を返して、それらのn個の行を排他的にロックするストアドプロシージャを作成しようとしています。私はSQLに少し慣れていますし、データ型を正しく照合するのが少し難しいです。私はそのようにように、プロシージャ本体内でカーソルを定義弱く定義された参照カーソルを定義する際に問題が発生しました
PACKAGE package IS
Type out_result_type is REF CURSOR;
PROCEDURE stored_proc
(in_n IN NUMBER DEFAULT 10,
out_list IN OUT out_result_type);
:
CURSOR OUT_RESULT_TYPE IS
SELECT a.id
FROM schema.table a
WHERE (some conditions) AND rownum <= in_n;
少し後に、私は、その後の結果を抽出しよう
マイパッケージ仕様は次のようになります出力変数へのカーソル:
OPEN OUT_RESULT_TYPE;
FETCH OUT_RESULT_TYPE INTO out_list; -- error on this line
CLOSE OUT_RESULT_TYPE;
しかし、このコードはコンパイルされていません。 oracleはout_listがすでに競合するデータ型で定義されていると不平を言っています。どのように私はこの問題を解決することができますか?それは私を夢中にさせている!
ありがとうございます。
なぜsys_refcursorを使用しないのですか? – tuinstoel
@tuinstoel:私はいつもそれが存在することを忘れる:) – Quassnoi
ありがとう、これは非常に有用だった –