Hola estoy haciendo unas pruebas para usar una función con RETURNS SETOF record, con los siguiente:
CREATE TABLE XPERSONA ( COD_PER CHAR(2), NOM_PER VARCHAR(20)); INSERT INTO XPERSONA VALUES ('01', 'ALBERTO'); INSERT INTO XPERSONA VALUES ('02', 'CARLOS'); INSERT INTO XPERSONA VALUES ('03', 'JUAN'); CREATE OR REPLACE FUNCTION public.f_xconsulta(character varying) RETURNS SETOF record AS $BODY$ DECLARE codigo ALIAS FOR $1; _registro record; BEGIN FOR _registro IN SELECT COD_PER, NOM_PER FROM XPERSONA WHERE COD_PER = codigo loop return next _registro; END LOOP; RETURN; END; $BODY$ LANGUAGE 'plpgsql' VOLATILE COST 100 ROWS 1000; Pero al ejecutar: SELECT f_xconsulta('01'); Me muestra el siguiente mensaje en PGAdmin: ERROR: se llamó una función que retorna un conjunto en un contexto que no puede aceptarlo CONTEXT: función PL/pgSQL f_xconsulta(character varying) en la línea 17 en RETURN NEXT ********** Error ********** ERROR: se llamó una función que retorna un conjunto en un contexto que no puede aceptarlo SQL state: 0A000 Context: función PL/pgSQL f_xconsulta(character varying) en la línea 17 en RETURN NEXT Me podrian dar una mano por favor. Uso Postgresql 9.4.5.