Oracle 使用游标和out参数调用存储过程
我有以下存储过程Oracle 使用游标和out参数调用存储过程,oracle,oracle-sqldeveloper,sqlplus,oracle12c,Oracle,Oracle Sqldeveloper,Sqlplus,Oracle12c,我有以下存储过程 CREATE OR Replace PROCEDURE sprocvPOP_GetvemployeeByFilter (TheFilter varchar2, TheOrder varchar2, PageOrder int, ItemsPerPage int, TheCount out number, cur out sys_refcursor)as begin ........ end 我想调用这个过程,并打
CREATE OR Replace PROCEDURE sprocvPOP_GetvemployeeByFilter
(TheFilter varchar2,
TheOrder varchar2,
PageOrder int,
ItemsPerPage int,
TheCount out number,
cur out sys_refcursor)as
begin
........
end
我想调用这个过程,并打印cur参数和count参数值,因为它们是out变量
我尝试在SQLDeveloper中使用以下语法
set serveroutput on
var rc refcursor;
declare
mycount number(19);
begin
execute sprocvPOP_GetvemployeeByFilter (NULL,NULL,1,10,mycount,:rc);
print rc;
dbms_output.put_line(mycount);
end;
但是我弄错了
PLS-00103:在预期以下情况时遇到符号“RC”::= . (@%;
符号“:”已替换为“RC”以继续
如何在SQL Developer中执行此过程并打印出参数?要回答您的原始问题,
print rc
是一个SQL*Plus命令,因此它需要在PL/SQL块之外。execute
也是一个SQL*Plus命令,不在PL/SQL中使用。因此,您的代码应该如下所示:
set serveroutput on
var rc refcursor;
declare
mycount number(19);
begin
sprocvPOP_GetvemployeeByFilter (NULL,NULL,1,10,mycount,:rc);
dbms_output.put_line(mycount);
end;
/
print rc;
但是,事实证明,您使用的是SQL Developer而不是SQL*Plus客户端来运行代码。SQL Developer中本机支持的SQL*Plus命令并不多
该工具的最新版本带有一个非常整洁的命令行界面
或者,使用内置的Run PL/SQL功能,如所述,
print rc
是一个SQL*Plus命令,因此它需要在PL/SQL块之外(在end;
之后)。我使用SQL developer,那么我如何调用此过程呢?我将print rc;放在end之后,但仍然会出错