【问题标题】:Assigning output parameter from Stored Procedure in oracle在 oracle 中从存储过程分配输出参数
【发布时间】:2012-10-08 11:31:15
【问题描述】:

请帮我解决以下情况

我需要在另一个存储过程中调用一个存储过程。内部 SP 将返回一个数值,我需要将其存储在局部变量中。

粗略的代码

AssignSpResult NUMBER;

AssignSpResult = SPtobecall(Param1,Param2, OutParam);

这个语法很可能是错误的,所以请帮助纠正它

【问题讨论】:

    标签: oracle stored-procedures


    【解决方案1】:

    下面是一个例子:

    HR\XE> create or replace procedure Proc1(p_out out number)
      2    is
      3    begin
      4      p_out := 123;
      5*   end;
    HR\XE> /
    
    Procedure created.
    
    HR\XE> create or replace procedure Proc2
      2    is
      3      l_val number;
      4    begin
      5      Proc1(l_val); 
      6      dbms_output.put_line('Here is a value returned by Proc1: ' || to_char(l_val));
      7    end;
      8  /
    
    Procedure created.
    
    HR\XE> set serveroutput on;
    HR\XE> exec Proc2;
    
    Here is a value returned by Proc1: 123                                            
    
    PL/SQL procedure successfully completed
    

    根据您的需要,使用函数返回数据过程处理的结果可能更方便。这是一个例子:

    HR\XE> create or replace function F1 return number
      2    is
      3      l_ret_value number;
      4    begin
      5      l_ret_value := 123;
      6      return l_ret_value;
      7    end;
    HR\XE> /
    
    Function created.
    
    HR\XE> create or replace procedure Proc3
      2    is
      3      l_val number;
      4    begin
      5      l_val := F1;
      6      dbms_output.put_line('Value returned by the F1 function: ' || 
                                  To_Char(l_val));
      7    -- Or
      8      dbms_output.put_line('Value returned by the F1 function: ' || To_Char(F1));
      9   end;
    HR\XE> /
    
    Procedure created.
    
    HR\XE> set serveroutput on;
    HR\XE> exec proc3;
    
    Value returned by the F1 function: 123
    Value returned by the F1 function: 123
    
    PL/SQL procedure successfully completed.
    
    HR\XE>
    

    【讨论】:

      【解决方案2】:

      存储过程不返回带有 IN、OUT 或 IN OUT 参数的值。所以可能你必须打电话:

      SPtobecalled(Param1,Param2, AssignSpResult );
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-02-21
        • 1970-01-01
        • 2012-12-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多