从 oracle 中的存储过程分配输出参数



请帮助我解决以下情况

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

粗略代码

AssignSpResult NUMBER;

AssignSpResult = SPtobecalled(Param1,Param2, OutParam);

此语法很可能是错误的,因此请帮助更正它

下面是一个示例:

HRXE> create or replace procedure Proc1(p_out out number)
  2    is
  3    begin
  4      p_out := 123;
  5*   end;
HRXE> /
Procedure created.
HRXE> 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.
HRXE> set serveroutput on;
HRXE> exec Proc2;
Here is a value returned by Proc1: 123                                            
PL/SQL procedure successfully completed

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

HRXE> 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;
HRXE> /
Function created.
HRXE> 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;
HRXE> /
Procedure created.
HRXE> set serveroutput on;
HRXE> exec proc3;
Value returned by the F1 function: 123
Value returned by the F1 function: 123
PL/SQL procedure successfully completed.
HRXE>

存储过程不返回它接受 IN、OUT 或 IN OUT 参数的值。所以你可能不得不打电话:

SPtobecalled(Param1,Param2, AssignSpResult );

最新更新