Hola que tal, bueno de php no se mucho asi ke te la deberia
Con respecto a tu script por que no lo creas asi:
Código PostgreSQL:
Ver original---Nota: Campo1 y Campo2 son alias que yo les di, tu puedes ponerle los nombres mas significativos ;-)
CREATE TYPE getlookupdata AS
(
campo1 VARCHAR(500),
campo2 VARCHAR(500)
);
CREATE 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
----- Quita el id_ por que a lo que entiendo regresar el valor que te esta tomando el campo1, asi regresar unicamente el valor
IF pintIdRegistro != 0 then
cSql := 'SELECT ' || campo1 || ' , ' || campo2 || '
FROM ' || campo1 || '
WHERE id_'||campo1||' = ' || campo3 || '
ORDER BY ' || campo2 || ' ';
ELSE
cSql := 'SELECT ' || 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;
Una duda, para que consultas sobre pstrtabla si ese valor lo estas regresando