3

在下面的查询中,如何在 PL/SQL 的“SQL Window”中获取 IO_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;

在此处输入图像描述

4

2 回答 2

4

如果“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 中查看游标的内容,作为选项之一,您可以简单地执行以下操作:

  1. 文件\新建\测试窗口
  2. 在那里复制/粘贴您的匿名 PL/SQL 块。在此之前删除IO_CURSOR SYS_REFCURSOR;变量声明。没有必要。也isr_main_view => IO_CURSOR 改为isr_main_view => :IO_CURSOR. 在这种情况下,您需要使用绑定变量。
  3. 在ref 光标variables window的指定变量名称的底部,test window您要查看其内容(IO_CURSOR不带分号),然后选择 type cursor
  4. 按绿色三角形执行块。
  5. value执行 PL/SQL 块后,请参阅variables window. 按下带有省略号的按钮以查看参考光标的内容IO_CURSOR
于 2013-10-01T08:28:55.513 回答
1

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

可以在这里找到一个简短的教程:http ://www.thatjeffsmith.com/archive/2011/12/sql-developer-tip-viewing-refcursor-output/

编辑:

抱歉,对 IDE-Tools 名称感到困惑。此答案仅适用于您使用Oracle SQL-Developer .... 如果您不使用它,我建议您尽快切换 :)

于 2013-10-01T08:42:41.660 回答