Je hebt verschillende problemen, maar de meest fundamentele is dat je dit helemaal niet zou moeten doen. Proberen om een waarde op te slaan - en synchroon te houden - die altijd kan worden berekend, is een fundamentele ontwerpfout.
Nu, naar de code zelf.Je hebt
SELECT SUM(VALUE) into product
Het doel van uw INTO moet een gedeclareerde variabele zijn. Het lijkt erop dat u .. INTO een kolomnaam probeert te SELECTEREN.
U moet lokale variabelen een naam geven om onderscheid te maken tussen de kolomnamen. Dus in plaats van
DECLARE
value number;
amount number;
total number;
Je zou moeten hebben
DECLARE
v_value number;
v_amount number;
v_total number;
Omgekeerd moet u nadenken over standaard naamgevingsconventies voor uw tabellen en kolommen. Voor kolommen gebruik en adviseer ik namen in de vorm van
Ten slotte is het moeilijk om codering aan te bevelen zonder de tabellen te kennen. Je hebt er een vage beschrijving van gegeven, maar het is beter om alles op tafel te leggen. Zie minimal-reproducible-example