【问题标题】:How to print SYS_REFCURSOR with PLSQLDeveloper window?如何使用 PLSQLDeveloper 窗口打印 SYS_REFCURSOR?
【发布时间】:2013-10-01 07:55:22
【问题描述】:

在下面的查询中,如何在 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;

【问题讨论】:

    标签: oracle plsqldeveloper


    【解决方案1】:

    如果“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. test window 底部的variables window 中指定要查看其内容的引用光标的变量名(IO_CURSOR,不带分号)并选择类型cursor
    4. 按绿色三角形执行块。
    5. PL/SQL 块执行后,请参考variables windowvalue 列。按下带有省略号的按钮以查看参考光标IO_CURSOR 的内容。

    【讨论】:

    • 好像是指allroundautomations的plsql开发者IDE
    • 抱歉,对 IDE 名称感到困惑(请参阅我帖子中的编辑)
    • @Jakob 在 PL/SQL 开发人员中,您可以使用 test window 来查看引用游标的内容以及任何其他变量。答案已被编辑。
    • @Nicholas:非常感谢。
    • @Nicholas Thx,我不知道 :)
    【解决方案2】:

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

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

    编辑:

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

    【讨论】:

      猜你喜欢
      • 2012-05-21
      • 2011-09-18
      • 2019-08-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多