Vous avez plusieurs problèmes, mais le plus fondamental est que vous ne devriez pas faire cela du tout. Essayer de stocker - et de rester synchronisée - une valeur qui peut toujours être calculée est un défaut de conception fondamental.
Passons maintenant au code lui-même. Vous avez
SELECT SUM(VALUE) into product
La cible de votre INTO doit être une variable déclarée. On dirait que vous essayez de SELECT .. INTO un nom de colonne.
Vous devez nommer les variables locales pour les distinguer des noms de colonne. Ainsi, au lieu de
DECLARE
value number;
amount number;
total number;
Vous devriez avoir
DECLARE
v_value number;
v_amount number;
v_total number;
Inversement, vous devriez penser aux conventions de nommage standard pour vos tables et colonnes. Pour les colonnes, j'utilise et recommande des noms sous la forme
Enfin, il est difficile de recommander une modification de codage sans connaître les tables. Vous en avez donné une vague description, mais mieux vaut tout mettre sur la table. Voir minimal-reproducible-example