【问题标题】:stored procedure for select query not giving output选择查询的存储过程不给出输出
【发布时间】:2016-02-09 23:55:58
【问题描述】:

我正在使用sqlplus 并有一个名为users 的表,我希望借助oracle 中的stored procedure 从中检索所有值。这就是我想要做的 -

create or replace procedure getall(prc out sys_refcursor)
is
begin
open prc for select * from users
end;
/

当我在此之后点击return,我收到以下错误 -

Warning: Procedure created with compilation errors.

为什么会这样?以及如何获得所需的输出?非常感谢您的帮助!

【问题讨论】:

    标签: oracle stored-procedures oracle11g sqlplus procedure


    【解决方案1】:

    要查看编译错误,请使用the show errors‌​ SQL*Plus command(也适用于 SQL Developer),或查询适用于任何客户端的 user_errors 视图。您还可以查询 all_errors 以查看架构中不存在的对象的问题。

    但是您只是在选择后缺少一个分号:

    create or replace procedure getall(prc out sys_refcursor)
    is
    begin
      open prc for select * from users;
    end;
    /
    

    您需要一个绑定变量才能在 SQL*Plus 中查看输出,例如:

    variable rc refcursor;
    exec getall(:rc);
    print rc
    

    注意过程调用中rc 前面的冒号,这表明它是一个绑定变量引用。而exec 是一个速记匿名块。

    您可能会发现拥有一个返回引用光标的函数或流水线函数会更简单;当然也可以直接查询表。

    【讨论】:

    • 感谢您的帮助。你知道我如何在 java 类中调用它并在那里得到响应吗?非常感谢@AlexPoole
    • @VidhiSinha - 有一个例子in this question。该问题的答案还链接到 an article 并带有完整的 Java 示例。这相当简单,但如果你不能让它工作,你应该问一个新的问题来显示你的 Java 代码。
    • 谢谢你,我会在@Alex Poole 上回复你
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-15
    • 1970-01-01
    • 2017-04-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多