0

Oracle 11gがバックエンドデータベースであるシステムで作業しています。 私はデータベースに対して非常に制限された権限しか持っていないので、私ができることはパッケージにあるプロシージャを呼び出すことだけです。Oracle 11g - sys_refcursor

これらのプロシージャは、結果セットをsys_refcursor型のOUTパラメータを介して返します。

C#で問題なくコールし、C#OracleDataset型を使用してカーソルからデータを取得できます。

ここは私の質問です。 これらのプロシージャを実行し、SQL Developerを介して結果を確認したいと考えています。 私はプロシージャを正常に実行することができますが、sys_refcursorのOUTパラメータの内容が私に不安を与えています。

私はいくつかのすごいやり方をしていて、タイプやその他のソリューションを作成するという人たちには、私は単に納得する権限がありません。

したがって、sys_refcursorに含まれる結果セットをどのように見ることができますか? は、だから私はどのように私はl_result_Setの内容を見ることができます

DECLARE 
    l_ref VARCHAR2(10); 
    l_result_set sys_refcursor; 
BEGIN 
    oracle_pkg.an_oracle_Proc(p_ref => l_ref, 
              p_result_set => l_result_set); 

    --How to select from l_result_set with limited permissions 
END  

....このようにそれを呼び出す

procedure an_oracle_Proc(p_ref   IN varchar2, 
         p_result_set OUT sys_refcursor); 

....私はこのシグネチャを持つプロシージャを持っていると言いますか?

答えて

0

私はもう一回見て、これを見つけました。コンピュータから遠く離れていくことができます。 ;) 左ペインで適切な変数を選択するだけです。

http://www.thatjeffsmith.com/archive/2011/12/sql-developer-tip-viewing-refcursor-output/

まだ - かなり実行ウィンドウを使用するよりも、これを行うために自分自身のSQLを記述するとよいでしょう。

+0

あなたは[このような]を意味します(http://stackoverflow.com/a/8618084/266304)? PL/SQLのカーソル行をループしたいのですか? –

+0

印刷はSQL Developerでは使用できません。( さらに、実際に実行するまで、どの列が返されるかは実際には分かりませんが、私は知っていますが、その許可のことを知っています。 暗闇の中で符号化 – AntDC

+0

印刷はSQL Developerで完全に利用可能で、スクリプト出力ウィンドウに印刷されます(バージョン3以上、DBに付属している1.xバージョンについてはわかりませんが、回答はそれ以降のバージョンにのみ適用されます)。その答えは特にSQL Developerに関するものでした。リンクした記事にも言及されていますが、Jeffは出力ウィンドウの使用を好むようです。 –

1

これは、私は本当に前にリンクされている答えを繰り返していますが、特にあなたのコードのためにされています

VARIABLE result_set refcursor; 

DECLARE 
    l_ref VARCHAR2(10); 
BEGIN 
    l_ref := 'whatever'; 
    oracle_pkg.an_oracle_Proc(p_ref => l_ref, 
              p_result_set => :result_set); 
END; 
/

PRINT result_set 

...とSQLワークシートからスクリプトとしてそのすべてを実行します。参照カーソルの内容がスクリプト出力ウィンドウに表示されます。

+0

あなたアレックス、あなたの時間と忍耐のために。 私が言ったように - それは基本的だった – AntDC

0

Sys_refcursorフォーム無名ブロックは少しトリッキーです。 sql-developerを使用して、パッケージまたはプロシージャを探索し、右クリックしてプロシージャ/パッケージを実行します。

Sql-developerは、値を入力できる入出力UIを開きます。そして同じUIで出力を見ることができます。詳細が必要な場合はお知らせください。私は実際に同じ2週間前に正常にデバッグしていました。