私の関数をより効率的にする方法を知りました。また、同じテーブルのselectステートメントと同じループ反復中に発生するため、updateステートメントは処理されていないと思います。私はこの機能を効率的かつ実際に動作させるためにどのように書くべきなのだろうと思っていました。私はこの機能を発注時にトリガで使用します。 ありがとうございます。Oracle PL/SQL関数 - 同じループで更新して選択します
create or replace function get_gewicht_product(p_dieet_id number)
return number
is
cursor c_Rids
is
select recept_id
from relation_6
where dieet_id = p_dieet_id;
type type_coll_med
is table of relation_5%rowtype
index by pls_integer;
t_med type_coll_med;
product_id number;
gewicht_id number;
restvoorraad_id number;
result number;
begin
for r_med in c_Rids
loop
select *
bulk collect into t_med
from relation_5
where recept_recept_id = r_med.recept_id;
for i in 1 .. t_med.count
loop
select restvoorraad
into restvoorraad_id
from voorraad
where product_product_id=t_med(i).product_product_id;
dbms_output.put_line(t_med(i).gewicht);
dbms_output.put_line(restvoorraad_id);
gewicht_id := t_med(i).gewicht;
result := restvoorraad_id-gewicht_id;
dbms_output.put_line(result);
update voorraad
set restvoorraad = result
where product_id = t_med(i).product_product_id;
end loop;
end loop;
return 1;
end get_gewicht_product;
あなたは身体中の関数名でそれらの前に付ける場合は、P_を使用してパラメータをプレフィックスする必要はありません。例えば"relation_6からrecept_idを選択します。ここで、dieet_id = get_gewicht_product .dieet_id;" –