Masz kilka problemów, ale najbardziej podstawowym jest to, że w ogóle nie powinieneś tego robić. Próba przechowywania – i utrzymywania synchronizacji – wartości, którą zawsze można obliczyć, jest podstawową wadą projektową.
Teraz przejdźmy do samego kodu. Masz
SELECT SUM(VALUE) into product
Cel twojego INTO musi być zadeklarowaną zmienną. Wygląda na to, że próbujesz wybrać .. INTO nazwę kolumny.
Należy nazwać zmienne lokalne, aby odróżnić je od nazw kolumn. Dlatego zamiast
DECLARE
value number;
amount number;
total number;
Powinieneś mieć
DECLARE
v_value number;
v_amount number;
v_total number;
I odwrotnie, powinieneś pomyśleć o standardowych konwencjach nazewnictwa dla tabel i kolumn. W przypadku kolumn używam i polecam nazwy w postaci
Wreszcie, trudno zalecić modyfikację kodowania bez znajomości tabel. Podałeś im niejasny opis, ale lepiej połóż wszystko na stole. Zobacz minimal-reproducible-example