Tu problema debe estar en como nombras las funciones y la llamada a campos.
Nunca he sido amigo de utilizar comillas en mis tablas, asi que ahí debe estar el problema.
Probé el codigo y me ha funcionado.
Código sql:
Ver originalCREATE TABLE tipocomponente (
ComponenteCod CHAR(12) DEFAULT ''::bpchar NOT NULL,
ComponenteDscrip VARCHAR(50) DEFAULT ''::CHARACTER VARYING NOT NULL,
Maximo_horas_uso BIGINT,
Precio NUMERIC,
FabricanteCod CHAR(10) DEFAULT ''::bpchar NOT NULL,
CONSTRAINT tipocomponente_pkey PRIMARY KEY(ComponenteCod)
) WITHOUT OIDS;
INSERT INTO tipocomponente VALUES('cod1','desc1',12,25000,'codfab1');
INSERT INTO tipocomponente VALUES('cod2','desc2',8,35000,'codfab2');
INSERT INTO tipocomponente VALUES('cod3','desc3',15,15000,'codfab3');
CREATE OR REPLACE FUNCTION actualizar(hora BIGINT) RETURNS BOOLEAN AS
$body$
BEGIN
UPDATE tipocomponente SET Precio = (Precio + 20) WHERE Maximo_horas_uso >= hora;
RETURN TRUE;
END;
$body$
LANGUAGE 'plpgsql'
SELECT actualizar(10);
Efectivamente, me actualiza el precio de los que tienen 12 y 15 horas sumandoles 20.
Un saludo