Máte několik problémů, ale ten nejzásadnější je ten, že byste to neměli dělat vůbec. Snaha uložit – a udržovat v synchronizaci – hodnotu, kterou lze vždy vypočítat, je základní konstrukční chybou.
Nyní k samotnému kódu. Máte
SELECT SUM(VALUE) into product
Cíl vašeho INTO musí být deklarovaná proměnná. Vypadá to, že se pokoušíte SELECT .. INTO název sloupce.
Měli byste pojmenovat lokální proměnné, abyste mezi nimi rozlišili názvy sloupců. Tedy místo
DECLARE
value number;
amount number;
total number;
Měli byste mít
DECLARE
v_value number;
v_amount number;
v_total number;
Naopak byste měli přemýšlet o standardních konvencích pojmenovávání vašich tabulek a sloupců. Pro sloupce používám a doporučuji názvy ve tvaru
A konečně, je těžké doporučit úpravu kódování bez znalosti tabulek. Uvedl jste jejich vágní popis, ale je lepší položit vše na stůl. Viz minimal-reproducible-example