Ok, por la similitud de los nombres no comprendia bien el modelo.
En Oracle se q se puede hacer el SQL todo en uno.
Código SQL
[-]
UPDATE PRODUCTOS
SET PRECIO_COMPRA = (select sum (TOTAL_PRECIO_COMPRA)
from COMPUESTOS
where ID = :IDPRODUCTO)
WHERE IDPRODUCTO = :IDPRODUCTO;
Lo que no se si es posible en Firebird, pero no seria mayor inconveniente hacerlo en dos pasos, recolectar 1ro. el monto a actualizar, y luego hacerlo ( update )
Rescatamos el total para ingresar como parametro :compra en el update
Código SQL
[-]
select sum (TOTAL_PRECIO_COMPRA)
from COMPUESTOS
where ID = :IDPRODUCTO;
Código SQL
[-]
UPDATE PRODUCTOS
SET PRECIO_COMPRA = :COMPRA
WHERE IDPRODUCTO = :IDPRODUCTO;