Ver Mensaje Individual
  #1 (permalink)  
Antiguo 17/01/2012, 14:20
jsmaira
 
Fecha de Ingreso: enero-2012
Mensajes: 29
Antigüedad: 12 años, 11 meses
Puntos: 0
Postgre S.O.S : campo dinamico en type en la salida...

Bueno muchachos ojala alguien me pudiera ayudar que llevo varios dias intentando y buscando y nada..lo que pasa es que tengo un procedimiento el cual tiene campos dinamicos..el procedimeinto en si funciona perfecto..el problema es la salida el "type"...ya que la salida debiera ser campo dinamico y no se como hacerlo pondre parte del codigo para q me entiendan mejor..eso si estoy trabajando en php..

codigo php:

$Datos = LocalQueryHandler("DOMO_getLookupData", $pParams, "");


$i = 0;

if ($Datos) {

foreach ($Datos as $Result) {

$param = $Result[$id_tabla] . "/" . $pasaValor;

$Value[$i] = $Result;

$Value[$i]['nombre_atributo'] = $campo_look;

$Value[$i]['PasaValor'] = $param;

$Value[$i]['SigCombo'] = "\"" . $sig_combo . "\"";

$i++;



$Datos = los trae perfecto y $pasaValor tambien los trae bien...

el problema esta en = $Result[$id_tabla] ...es aqui donde no trae nada de nada..aqui es donde deberia mostrar los datos del procedimeinto en si..mas singular el id_tabla que trae el procedimiento..pero este id_tabla es dinamico y no se como hacer para q la salida del procedimiento sea dinamico..si los datos los pongo en duro funciona .pero no es lo que busco...alguien que me pueda ayudar por favor

aqui esta el procedimiento:

CREATE OR REPLACE FUNCTION domo_getlookupdata(pstrtabla character varying, pstrcampolookup character varying, pintidregistro character varying)
RETURNS SETOF getlookupdata AS
$BODY$
DECLARE
res getlookupdata%rowtype;
pintIdRegistro VARCHAR(100) = 0;
vsql VARCHAR(4000);

BEGIN

/*****si se fijan el procedimiento ya toma campos dinamicos *****o sea puede ser de cualquier tabla los datos*****////


IF pintIdRegistro <> 0 then
vsql := 'SELECT id_' || pstrTabla || ' , '
|| pstrCampoLookup || ' FROM ' || pstrTabla
|| ' WHERE id_'||pstrTabla||' = ' || pintIdRegistro :: VARCHAR(30)
|| ' ORDER BY ' || pstrCampoLookup || ' ';



ELSE
vsql := 'SELECT id_' || pstrTabla || ' , '
|| pstrCampoLookup || ' FROM ' || pstrTabla
|| ' ORDER BY ' || pstrCampoLookup || ' ';

END IF;
FOR res IN

execute vsql
LOOP
RETURN NEXT res;
END LOOP;
RETURN;
END;
$BODY$
LANGUAGE 'plpgsql' VOLATILE;
ALTER FUNCTION domo_getlookupdata(character varying, character varying, character varying) OWNER TO sa;


y este es el Type:

Create type getlookupdata as
(id_tabla text,
combo text)

id_tabla es el problema como hacerlo dinamica su salida????