如何将refcursor结果/输出显示为文本?

时间:2012-04-20 13:36:45

标签: oracle stored-procedures plsql sys-refcursor

我正在尝试在Oracle中调用存储过程并显示调用的结果,问题是它在行FETCH v_cur into v_a;上崩溃并出现错误:ORA-06504: PL/SQL: Return types of Result Set variables or query do not match.

我猜查询的输出与v_a VARCHAR2(100)不匹配,但我不知道该放什么。被调用的存储过程会连接多个表,并选择属于不同表的20多个不同的列。所以我想要的是只查看查询的输出而不必分别引用每个结果列。我该怎么做呢?

我正在使用SQL Navigator(我猜不是那么重要)。

DECLARE 
  v_cur SYS_REFCURSOR;
  v_a   VARCHAR2(100);
BEGIN
   pkg_get_results.get_rows(v_cur,to_date('2012/04/12', 'yyyy/mm/dd'),to_date('2012/04/12', 'yyyy/mm/dd'), '','','','');
  LOOP
    FETCH v_cur into v_a;  -- what to put here ?
    EXIT WHEN v_cur%NOTFOUND;
    dbms_output.put_line(v_a );
  END LOOP;
  CLOSE v_cur;
END;

1 个答案:

答案 0 :(得分:2)

SQL Navigator确实能够为您执行此操作。如何做到完全取决于您的Navigator版本,并且可以想象(虽然我不知道)某些版本可能没有它。

可在此主题中找到说明:http://sqlnavigator.inside.quest.com/thread.jspa?threadID=2466

顺便说一下,蟾蜍也有这种能力。