3

次のシナリオで私を助けてください

別のストアド プロシージャ内でストアド プロシージャを呼び出す必要があります。内側の SP は、ローカル変数に格納する必要がある数値を返します。

大まかなコード

AssignSpResult NUMBER;

AssignSpResult = SPtobecalled(Param1,Param2, OutParam);

この構文はおそらく間違っているので、修正してください

4

2 に答える 2

5

以下に例を示します。

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>
于 2012-10-08T12:19:19.583 に答える
3

ストアド プロシージャは、IN、OUT、または IN OUT パラメータを取る値を返しません。したがって、おそらくあなたは電話する必要があります:

SPtobecalled(Param1,Param2, AssignSpResult );
于 2012-10-08T11:43:52.773 に答える