Ver Mensaje Individual
  #5 (permalink)  
Antiguo 19/01/2012, 12:20
Avatar de drako_darpan
drako_darpan
 
Fecha de Ingreso: octubre-2008
Ubicación: Sinaloa
Mensajes: 617
Antigüedad: 16 años, 2 meses
Puntos: 58
Respuesta: necesito que envie datos dinamicos

Si no tienes un type, encontes revisa esto, haber si te sirve como ejemplo:

Código PostgreSQL:
Ver original
  1. CREATE OR REPLACE FUNCTION domo_getlookupdata(pstrtabla character varying, pstrcampolookup character varying, pintidregistro numeric)
  2. RETURNS VARCHAR AS
  3. $BODY$
  4.     DECLARE
  5.         campo1      ALIAS FOR $1; -- Toma los valores de las variables
  6.         campo2      ALIAS FOR $2;
  7.         campo3      ALIAS FOR $3; -- Si el campo es Entero mandalo como INT4, para que no tengas que castearlo de CHAR a INT
  8.  
  9.         reg         RECORD; -- El type a regresar
  10.         cSql        VARCHAR(4000);
  11.         cCampoRetorno   VARCHAR(5000);
  12.  
  13.     BEGIN
  14.  
  15.         IF pintIdRegistro != 0 then
  16.             cSql := 'SELECT id_' || campo1 || ' , ' || campo2 || '
  17.                  FROM ' || campo1 || '
  18.                  WHERE id_'||campo1||' = ' || campo3 || '
  19.                  ORDER BY ' || campo2 || ' ';
  20.         ELSE
  21.             cSql := 'SELECT id_' || campo1 || ' , ' || campo2 || '
  22.                  FROM ' || campo1 || '
  23.                  ORDER BY ' || campo2 || ' ';
  24.         END IF;
  25.        
  26.         FOR reg IN execute cSql
  27.         LOOP
  28.             RETURN NEXT reg; -- Solo asigna los valores en el orden que tengas el TYPE
  29.         END LOOP;
  30.  
  31.         sCampoRetorno = reg.id_Campo1 ||' ' || reg.Campo2
  32.     RETURN sCampoRetorno;
  33.     END;
  34. $BODY$
  35. LANGUAGE 'plpgsql' VOLATILE;

Suerte