ここで問題が発生しました。私は2つのテーブルpp_gabungan
とjharga
. Jharga
は予算の値pp_gabungan
を保存するために使用されますが、書籍の調達のデータを保存するために使用されます。カーソルを使用してテーブルのeks
フィールドを自動的に更新する必要があります。pp_gabungan
たとえば、 を含む合計価格sum of (eks*harga)
が 未満でbudget
ある限り、eks フィールドの値を 1 増やす必要があります。しかし問題は、このコードは機能しますが、更新は 1 回だけです。sum(eks*harga)
が 未満である限り、インクリメントを停止すべきではありませんbudget
。ループを追加する必要があるかどうか助けてもらえますか? はいの場合..どうあるべきですか?これが私のコードです:
DECLARE
bb jharga.budget%type;
tharga jharga.budget%type;
CURSOR eksupdate IS
SELECT
isbn,judul,frekuensi,stok,harga,prioritas,eks,kelompok,bobot
FROM pp_gabungan
FOR UPDATE OF eks NOWAIT;
autoeks eksupdate%ROWTYPE;
BEGIN
OPEN eksupdate; -- rows are locked.
select budget into bb from jharga;
select sum(eks*harga) into tharga from pp_gabungan;
LOOP
FETCH eksupdate INTO autoeks;
--EXIT WHEN eksupdate%NOTFOUND;
tharga:=(autoeks.eks*autoeks.harga);
IF tharga <= bb THEN
UPDATE pp_gabungan
SET eks = autoeks.eks+1
WHERE CURRENT OF eksupdate ;
END IF;
exit when tharga > bb;
END LOOP;
--COMMIT; -- rows are unlocked.
CLOSE eksupdate;
end;