2010/6/9 Ernesto Herrera <[email protected]>:
> Hola!
> Tengo una función en PL/pgSQL que en su definición me construye una tabla
> temporal usando sql dinámico ya que sus atributos son variables y dependen
> de los parámetros  de entrada, la función me retorna void y para ver los
> resultados tengo que ejecutar la función y luego seleccionar de la tabla
> temporal.
> No existe forma que una función me devuelva un conjunto sin tener que
> especificar los atributos al llamarla??
> saludos.
>

no creo que tenga mucho sentido tener una funcion que sea
completamente ignorante en cuanto al resultado que va a regresar, me
parece un mal diseño y una pesima idea!

una vez dicho eso... podrias devolver todas las columnas en texto
concatenado usando algun caracter de separacion (digamos '|') y luego
haces algo como:

select cols[1], cols[2]
  from (select string_to_array(f1, '|') as cols from f1()) as foo;

donde f1() es la funcion que devuleve registros tipo text, que luego
son convertidos a un arreglo y solo te preocupas de usar los campos
indicando el indice... asumo que no pretendes que la aplicacion
tambien sea ignorante en cuanto a lo que espera de la funcion en un
momento dado verdad?

deficiencia, regresara todos los campos como texto

otra alternativa es al momento de llamar a la funcion indicar que
esperas que retorne:
select * from f1() as (col1 int, col2 text);

pero eso es lo que por algun motivo crees que no quieres

-- 
Jaime Casanova         www.2ndQuadrant.com
Soporte y capacitación de PostgreSQL
-
Enviado a la lista de correo pgsql-es-ayuda ([email protected])
Para cambiar tu suscripci�n:
http://www.postgresql.org/mailpref/pgsql-es-ayuda

Responder a