Hola que tal, revisa si con esto te sirve:
Código PostgreSQL:
Ver originalCREATE OR REPLACE FUNCTION domo_getlookupdata(pstrtabla character varying, pstrcampolookup character varying, pintidregistro numeric)
RETURNS SETOF getlookupdata AS
$BODY$
DECLARE
campo1 ALIAS FOR $1; -- Toma los valores de las variables
campo2 ALIAS FOR $2;
campo3 ALIAS FOR $3; -- Si el campo es Entero mandalo como INT4, para que no tengas que castearlo de CHAR a INT
reg getlookupdata; -- El type a regresar
cSql VARCHAR(4000);
BEGIN
IF pintIdRegistro != 0 then
cSql := 'SELECT id_' || campo1 || ' , ' || campo2 || '
FROM ' || campo1 || '
WHERE id_'||campo1||' = ' || campo3 || '
ORDER BY ' || campo2 || ' ';
ELSE
cSql := 'SELECT id_' || campo1 || ' , ' || campo2 || '
FROM ' || campo1 || '
ORDER BY ' || campo2 || ' ';
END IF;
FOR reg IN execute cSql
LOOP
RETURN NEXT reg; -- Solo asigna los valores en el orden que tengas el TYPE
END LOOP;
RETURN;
END;
$BODY$
LANGUAGE 'plpgsql' VOLATILE;
Espero te sirva