在下面的查询中,如何在PL/ IO_CURSOR的"SQL“中获取SQL值
DECLARE
SOME_VAR_1 VARCHAR2(20);
SOME_VAR_2 VARCHAR2(20);
SOME_VAR_3 DECIMAL;
IO_CURSOR SYS_REFCURSOR;
BEGIN
SOME_VAR_1 := 'test1';
SOME_VAR_2 := 'test2';
SOME_VAR_3 := 1;
IO_CURSOR := NULL;
Get_Analysis_Data(p_in_symbol_type => SOME_VAR_1,
p_in_symbol => SOME_VAR_2,
p_in_isr_id => SOME_VAR_3,
isr_main_view => IO_CURSOR);
PRINT IO_CURSOR
END;

发布于 2013-10-01 16:28:56
如果"SQL Window“指的是SQL*PLUS,那么要打印(使用PRINT命令)游标的内容,您需要在PL/SQL块外部声明一个绑定变量,通过执行该块为PL/SQL块内的绑定变量赋值,然后使用PRINT命令打印内容:
SQL> variable IO_CURSOR refcursor;
SQL> DECLARE
2 SOME_VAR_1 VARCHAR2(20);
3 SOME_VAR_2 VARCHAR2(20);
4 SOME_VAR_3 DECIMAL;
5 --IO_CURSOR SYS_REFCURSOR;
6 BEGIN
7 SOME_VAR_1 := 'test1';
8 SOME_VAR_2 := 'test2';
9 SOME_VAR_3 := 1;
10 --IO_CURSOR := NULL; -- no need to do that
11 Get_Analysis_Data(p_in_symbol_type => SOME_VAR_1,
12 p_in_symbol => SOME_VAR_2,
13 p_in_isr_id => SOME_VAR_3,
14 isr_main_view => :IO_CURSOR);
15 END;
16 /
SQL> print io_cursor;编辑
要在PL/SQL Developer中作为选项之一查看游标的内容,只需执行以下操作:
SQL
IO_CURSOR SYS_REFCURSOR;变量声明。没有必要这样做。还要将isr_main_view => IO_CURSOR更改为isr_main_view => :IO_CURSOR。在这种情况下,您需要使用绑定变量。在variables window中,指定要查看其内容的引用游标的变量名(不带分号的IO_CURSOR),然后通过按绿色的triangle. block cursor.
test window PL/SQL block is executed请参阅variables window的列value。按下带有省略号的按钮,查看引用光标IO_CURSOR.的内容
发布于 2013-10-01 16:42:42
如果Get_Analysis_Data是一个存储过程,您可以通过打开它并使用"Run“命令(工具栏中的绿色箭头)来执行它。refcursor的内容像表格一样打印在"Variables Output“窗口中。
在这里可以找到一个简短的教程:http://www.thatjeffsmith.com/archive/2011/12/sql-developer-tip-viewing-refcursor-output/
编辑:
对不起,搞混了IDE-Tools的名字。此答案仅适用于您使用Oracle SQL-Developer...的情况。如果您不使用它,我建议您尽快切换:)
https://stackoverflow.com/questions/19110842
复制相似问题