【问题标题】:Returning result from stored procedure从存储过程返回结果
【发布时间】:2013-06-21 20:28:49
【问题描述】:

我有一个执行 select 语句的存储过程。我创建了另一个存储过程,它调用了早期的存储过程,但可以获取结果。以下是脚本

Proc1:

create or replace
PROCEDURE p_procedure3(custid IN number, custname OUT varchar2) IS
BEGIN

SELECT firstname 
INTO custname
FROM customer_s
WHERE customerid = custid;

END p_procedure3;

proc2:

create or replace
procedure finalexecution
DECLARE
l_name varchar2(20);
BEGIN

p_procedure3(644, l_name);

dbms_output.put_line(l_name);

END;

但是什么时候执行exe最终执行;

遇到错误

Error starting at line 8 in command:
exec finalexecution
Error report:
ORA-06550: line 1, column 7:
PLS-00905: object CIMNEWUSER.FINALEXECUTION is invalid
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored
06550. 00000 -  "line %s, column %s:\n%s"
*Cause:    Usually a PL/SQL compilation error.
*Action:

【问题讨论】:

    标签: sql oracle stored-procedures plsql


    【解决方案1】:

    您的finalexecution 程序包含错误。您应该使用ISAS 而不是DECLARE。更多详情请查看documentaion

    如果有任何错误,您可以查看all_errors 视图以找出导致错误的原因。

    【讨论】:

    • 问题已解决。现在接下来的事情是我想检索我写过的多行脚本请在下面找到它,我知道我必须在某个地方使用循环但无法做到这一点,请指导我下面是给我最后一个 id 结果的脚本
    【解决方案2】:

    将第二个过程改为:

    create or replace
    procedure finalexecution as
      l_name varchar2(20):='';
    BEGIN
      p_procedure3(644, l_name);
      dbms_output.put_line(l_name);
    END;
    

    更多详情请参考Call a stored procedure with another in Oracle

    【讨论】:

      猜你喜欢
      • 2017-04-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-20
      • 2016-03-27
      • 2015-04-14
      • 2021-03-22
      • 2015-06-03
      相关资源
      最近更新 更多