「プログラムユニットORDERTOTAL内で定義されたローカルサブプログラム」は、質問が「このコードはいくつかの場所から呼び出される」と述べたので正しいです。言い換えれば、私たちは次のようなユニットを持っています
create function foo
return number
is
v_one number := 200;
v_two number := 10;
begin
v_one := some complex math operation;
-- some other code
v_two := the same complex math operation;
-- etc..
end;
/
したがって、その数学演算の繰り返しを節約するために(これはあなたが与えた解決策です..関数自体のコードのブロックであり、必要に応じて繰り返されます)、これを行うことができます:
create function foo
return number
is
v_one number := 200;
v_two number := 10;
function calc_math(p_var number)
return number
is
begin
return complex math operation;
end calc_math;
begin
v_one := calc_math(v_one);
-- some other code
v_two := calc_math(v_two);
-- etc..
end;
/
したがって、コードの繰り返しを回避できます。