如何使用PLSQLDeveloper窗口打印SYS_REFCURSOR?

时间:2013-10-01 07:55:22

标签: oracle plsqldeveloper

在下面的查询中,如何在PL / SQL“SQL窗口”中获取IOs CURSOR值

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;

enter image description here

2 个答案:

答案 0 :(得分:4)

如果用“SQL Window”表示SQL * PLUS,那么要打印(使用PRINT命令)游标的内容,你需要在PL / SQL块之外声明一个绑定变量,赋值通过执行块然后使用PRINT命令打印内容到PL / SQL块内的绑定变量:

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中查看游标的内容,作为其中一个选项,您只需执行以下操作:

  1. 文件\新\测试窗口
  2. 在那里复制/粘贴您的匿名PL / SQL块。在此之前删除IO_CURSOR SYS_REFCURSOR;变量声明。没有必要。同时将isr_main_view => IO_CURSOR更改为isr_main_view => :IO_CURSOR。在这种情况下,您需要使用绑定变量。
  3. variables window底部的test window指定您的引用光标的变量名称,您要查看的内容(IO_CURSOR没有前面的分号)并选择类型{{ 1}}。
  4. 按绿色三角形执行该块。
  5. 执行PL / SQL块后,请参考cursor的{​​{1}}列。按下带有省略号的按钮以查看引用游标value的内容。

答案 1 :(得分:1)

如果 Get_Analysis_Data 是存储过程,您可以通过打开它并使用“运行”命令(工具栏中的绿色箭头)来执行它。 refcursor的内容打印在“Variables Output”窗口中,如表格。

可在此处找到简要教程:http://www.thatjeffsmith.com/archive/2011/12/sql-developer-tip-viewing-refcursor-output/

编辑:

抱歉,与IDE-Tools名称混淆了。此答案仅适用于您使用Oracle SQL-Developer ....如果您不使用它我建议您尽快切换:)