我正在使用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.
为什么会这样?我如何获得所需的输出?非常感谢!
答案 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
是一个简写的匿名阻止。
您可能会发现使用返回引用游标或流水线函数的函数更简单;或者只是直接查询表格。