可能重复:
Best way/tool to get the results from an oracle package procedure
Oracle SQL Developer: Show REFCURSOR Results in Grid?
我是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;
当我在Oracle SQL Developer中运行上述查询时,我收到一条消息'anonymus block completed'并且没有显示任何结果。
任何人都可以帮助我,如何查看结果。
答案 0 :(得分:22)
您可以使用SQL Developer中声明的绑定变量来保存并显示结果:
var r refcursor;
exec myPackage.mySPTest(P_NOTIFICATION_ID => 1975357, P_CURSOR => :r);
print r;
exec
是匿名块的简写,所以这相当于:
var r refcursor;
begin
myPackage.mySPTest(P_NOTIFICATION_ID => 1975357, P_CURSOR => :r);
end;
/
print r;
除非P_CURSOR
被宣布为无用的东西,否则......
答案 1 :(得分:-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;