Saludos de nuevo yo por aqui
Tengo un problemita con un UPDATE que cuando lo corro me genera el siguiente error
ERROR: cannot open non-SELECT query as cursor
CONTEXT: PL/pgSQL function "act_concepto" line 20 at for over execute statement
y nose a que se debe ya que soy nueva en esto de postgre
Aqui le smuestro el procedimiento:
CREATE OR REPLACE FUNCTION act_concepto (id_concepto int4, concepto "varchar", descripcion "varchar", clase int4, tipo int4, status_convenio int4, afecta_prestaciones int4, afecta_utilidades int4, afecta_vacaciones int4, unidad int4, formula "varchar", afecta_liquidacion int4, afecta_sueldomensual int4, ingreso_mensual float8, vigente int4, asociado int4)
RETURNS SETOF conceptos AS
$BODY$
DECLARE
fila conceptos%rowtype;
sql character varying;
BEGIN
sql = 'UPDATE CONCEPTOS SET clase = clase,
tipo = tipo,
status_convenio = status_convenio,
afecta_prestaciones = afecta_prestaciones,
afecta_utilidades = afecta_utilidades,
afecta_vacaciones = afecta_vacaciones,
unidad = unidad,
formula = formula,
afecta_liquidacion = afecta_liquidacion,
afecta_sueldomensual = afecta_sueldomensual,
ingreso_mensual = ingreso_mensual,
vigente = vigente,
asociado = asociado
WHERE idconcepto like ''%' || ltrim(rtrim(id_concepto)) || '%''';
FOR fila IN EXECUTE sql
LOOP
RETURN NEXT fila;
END LOOP;
RETURN;
END;
$BODY$
LANGUAGE 'plpgsql' VOLATILE;
ALTER FUNCTION act_concepto(id_concepto int4, concepto "varchar", descripcion "varchar", clase int4, tipo int4, status_convenio int4, afecta_prestaciones int4, afecta_utilidades int4, afecta_vacaciones int4, unidad int4, formula "varchar", afecta_liquidacion int4, afecta_sueldomensual int4, ingreso_mensual float8, vigente int4, asociado int4) OWNER TO postgres;
Lo corro de esta forma y aqui es cuando me muestra el error
SELECT * from act_concepto (1,'Pago de vacaciones','Pago de vacacione', 2,3,0,0,0,0,3,' sueldo/30',0,0,0,0,0);
Gracias de antemano