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
