我有以下存储过程
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参数值,因为它们是变量。
我尝试在SQL Developer中使用以下语法
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中执行此过程并打印出参数?
答案 0 :(得分:0)
要回答原始问题,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命令。 The list is here.
该工具的最新版本附带一个非常整洁的命令行界面。 Find out more。
或者,使用内置的运行PL / SQL功能,如in this tutorial
所述