选择查询的存储过程不提供输出

时间:2015-11-09 10:44:56

标签: oracle stored-procedures oracle11g sqlplus procedure

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

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.

为什么会这样?我如何获得所需的输出?非常感谢!

1 个答案:

答案 0 :(得分: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是一个简写的匿名阻止。

您可能会发现使用返回引用游标或流水线函数的函数更简单;或者只是直接查询表格。