【问题标题】:execute stored procedure with out ref_cursor in sql navigator在 sql navigator 中执行不带 ref_cursor 的存储过程
【发布时间】:2014-04-02 15:22:15
【问题描述】:

我是 Oracle 和 sql navigator 的新手。我似乎找不到执行存储过程并查看其结果的方法。 proc的创建如下。如何在 sql navigator 中执行此过程。我正在使用 sql 导航器 6.7。另外,请注意 proc 正在使用 out ref-cursor。

PROCEDURE getdata
( p_id            IN VARCHAR2,
 p_date            IN DATE,
 p_out   OUT ref_cursor)
IS

BEGIN
 OPEN p_out FOR
    SELECT *
    FROM   OPS_ARW.logs
    WHERE   member_id = p_id 
    AND     date>p_date;

END;   

PS:我很确定这是重复的。如果您只能将我重定向到正确的位置,我将不胜感激。

【问题讨论】:

  • 您的输出参数是否应该声明为 SYS_REFCURSOR?
  • 我不知道。我对甲骨文非常陌生。我只想运行这个过程并查看结果。不过我无法对 proc 进行更改。
  • 我无法使用sqlfiddle 执行此操作,但我在SO 上发现了与您的问题相关的另一个问题。
  • 谢谢。我去看看。

标签: sql oracle ref-cursor sql-navigator


【解决方案1】:

这个问题已经很久了,但是由于我花了很多时间来构建这段代码,这里是我针对类似问题的运行解决方案。注意:我的过程返回列 idcodboarddescrboardTABNUM。我正在使用 Sql Navigator:

declare
l_list_boards sys_refcursor;
l_id          number;
l_codboard    VARCHAR2(50 BYTE);
l_descrboard  VARCHAR2(250 BYTE);
l_TABNUM      NUMBER;
begin

    PACK_NAME.GetBoardsList(list_boards=> l_list_boards);

    DBMS_OUTPUT.put_line ('Results: ');  

    loop
        fetch l_list_boards into l_id, l_codboard, l_descrboard, l_TABNUM;
        DBMS_OUTPUT.put_line(l_descrboard);
        EXIT WHEN l_list_boards%NOTFOUND;
    end loop;

    close l_list_boards;
end; 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多