Hai diversi problemi, ma il più fondamentale è che non dovresti farlo affatto. Cercare di memorizzare - e mantenere sincronizzato - un valore che può essere sempre calcolato è un difetto di progettazione fondamentale.
Ora, al codice stesso. Hai
SELECT SUM(VALUE) into product
La destinazione del tuo INTO deve essere una variabile dichiarata. Sembra che tu stia provando a SELECT .. INTO un nome di colonna.
Dovresti nominare le variabili locali per distinguere tra loro i nomi di una colonna. Quindi, invece di
DECLARE
value number;
amount number;
total number;
Dovresti averlo
DECLARE
v_value number;
v_amount number;
v_total number;
Al contrario, dovresti pensare alle convenzioni di denominazione standard per le tabelle e le colonne. Per le colonne utilizzo e consiglio nomi sotto forma di
Infine, è difficile consigliare la modifica della codifica senza conoscere le tabelle. Ne hai dato una vaga descrizione, ma meglio mettere tutto sul tavolo. Vedi minimal-reproducible-example