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之后,但仍然会出错