次のシナリオで私を助けてください
別のストアド プロシージャ内でストアド プロシージャを呼び出す必要があります。内側の SP は、ローカル変数に格納する必要がある数値を返します。
大まかなコード
AssignSpResult NUMBER;
AssignSpResult = SPtobecalled(Param1,Param2, OutParam);
この構文はおそらく間違っているので、修正してください
次のシナリオで私を助けてください
別のストアド プロシージャ内でストアド プロシージャを呼び出す必要があります。内側の SP は、ローカル変数に格納する必要がある数値を返します。
大まかなコード
AssignSpResult NUMBER;
AssignSpResult = SPtobecalled(Param1,Param2, OutParam);
この構文はおそらく間違っているので、修正してください
以下に例を示します。
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>
ストアド プロシージャは、IN、OUT、または IN OUT パラメータを取る値を返しません。したがって、おそらくあなたは電話する必要があります:
SPtobecalled(Param1,Param2, AssignSpResult );