如何在Oracle SQL Developer中查看refcursor结果/输出?

Pra*_*van 10 oracle plsql ref-cursor oracle10g oracle-sqldeveloper

可能重复:
从oracle包过程中获取结果的最佳方法/工具
Oracle SQL Developer:在Grid中显示REFCURSOR结果?

我是Oracle SQL Developer的新手.我正在使用Oracle SQL Developer版本3.0.我试图使用以下查询来测试我的SP.

DECLARE
  type output_cursor is ref cursor;
  P_CURSOR output_cursor;
BEGIN
  P_CURSOR := NULL;
  myPackage.mySPTest (  P_NOTIFICATION_ID => 1975357,P_CURSOR => P_CURSOR) ;
END;
Run Code Online (Sandbox Code Playgroud)

当我在我的Oracle SQL Developer中运行上述查询时,我收到一条消息'anonymus block completed'并且没有显示任何结果.

任何人都可以帮助我,如何看到结果.

.

Ale*_*ole 22

您可以使用SQL Developer中声明的绑定变量来保存并显示结果:

var r refcursor;
exec myPackage.mySPTest(P_NOTIFICATION_ID => 1975357, P_CURSOR => :r);
print r;
Run Code Online (Sandbox Code Playgroud)

exec 是匿名块的简写,所以这相当于:

var r refcursor;
begin
    myPackage.mySPTest(P_NOTIFICATION_ID => 1975357, P_CURSOR => :r);
end;
/
print r;
Run Code Online (Sandbox Code Playgroud)

除非P_CURSOR被宣布为无益的东西,否则......


Emm*_*l N -3

要查看光标结果,您需要循环光标并打印值。您需要知道光标返回的内容的列名称。你可以这样做:

DECLARE
   type output_cursor is ref cursor;
   P_CURSOR output_cursor;
BEGIN
   P_CURSOR := NULL;
   DOCTORS_APP.get_reminders (  P_NOTIFICATION_ID => 1975357,P_CURSOR => P_CURSOR) ;
   //replace Column1 and Column2 with actual column names
   FOR CUR_VAL in P_CURSOR LOOP
        DBMS_OUTPUT.PUT_LINE(CUR_VAL.Column1||' '||CUR_VAL.Column2);
   END LOOP;
 END;
Run Code Online (Sandbox Code Playgroud)