【问题标题】:calling stored procedure with cursor and out parameter使用游标和输出参数调用存储过程
【发布时间】:2017-07-19 09:58:18
【问题描述】:

我有以下存储过程

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变量。

我尝试在 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 中执行此过程并打印出参数?

【问题讨论】:

  • print rc 是 SQL*Plus 命令,因此它需要位于 PL/SQL 块之外(在 end; 之后)。
  • iam 使用 sql developer 那么我该如何调用这个过程呢?
  • 我把 print rc ;结束后;但我仍然遇到错误

标签: oracle oracle-sqldeveloper sqlplus oracle12c


【解决方案1】:

要回答您最初的问题,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

或者,使用 in this tutorial 中描述的内置运行 PL/SQL 功能

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-12-12
    • 2012-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多