2016-10-26 2 views
1

、どのように呼びますか。プロシージャを実行しようとするとき、私はどの値をP2パラメータに入れなければならないでしょうか。または私は定期的に参照カーソルを介して設定された結果を見るために呼び出すことができますか?または私がする必要があるいくつかの他の取り決めがあります。私が代わりに*を使用するのではなく、明示的にフィールドをリストすることをお勧めしますしかしプロシージャを作成した後に、参照カーソルをoracleに戻します。

declare 
    vCur sys_REFCURSOR; 
    vVar table1%ROWTYPE; 
begin 
    ref_test(1, vCur); 
    loop 
     fetch vCur into vVar; 
     exit when vCur%NOTFOUND; 
     dbms_output.put_line(vVar.col1 || ' - ' || vVar.col2); 
    end loop; 
end; 

:あなたはこのようにそれを呼び出すことができます

create or replace procedure ref_test 
( 
p1 in table1.col1%type 
,p2 out sys_refcursor 
) 
as 
begin 
open p2 for 
select * from table1 
where col1 = p1; 
end; 
/
+0

Javaからこれを呼び出す必要があるというコメントに言及しているので[これは関連しています](http://stackoverflow.com/q/19421355/266304)、[これはこれです](http:// stackoverflow.com/q/21913471/266304)。彼らは正確な重複としてカウントするかどうかは分かりません。私はどこかにそこに1つがあると確信しています。あなたの質問にその情報を与えることは役に立ちましたでしょう。 –

答えて

0

助けいただければ幸いです。

+0

こんにちはaleksej、私は目的を報告するためのそのプロシージャを作っているとrefcursorの出力はjavaからプロシージャから直接呼び出されます。私はテストのために無名ブロックを宣言できます。他の提案? SQLは5-6テーブルの結合になります – Ronnie710

関連する問題