Du har flera problem, men den mest grundläggande är att du inte ska göra det här alls. Att försöka lagra - och hålla synkroniserat - ett värde som alltid kan beräknas är ett grundläggande designfel.
Nu till själva koden. Du har
SELECT SUM(VALUE) into product
Målet för din INTO måste vara en deklarerad variabel. Det verkar som att du försöker VÄLJA .. INTO ett kolumnnamn.
Du bör namnge lokala variabler för att skilja mellan dem och kolumnnamn. Alltså istället för
DECLARE
value number;
amount number;
total number;
Du borde ha
DECLARE
v_value number;
v_amount number;
v_total number;
Omvänt bör du tänka på vanliga namnkonventioner för dina tabeller och kolumner. För kolumner använder och rekommenderar jag namn i form av
Slutligen är det svårt att rekommendera kodändring utan att känna till tabellerna. Du har gett en vag beskrivning av dem, men bättre att lägga allt på bordet. Se minimal-reproducerbart-exempel