Hola Ivan, si entendí bien lo que vas a devolver siempre es (impuesto, valor)
entonces pudieras crear un tipo de dato para esa función:
 create type tu_tipo as (impuesto character varying, valor double))

y luego defines tu_funcion de ese tipo o un arreglo de ese tipo.


saludos

El 11/09/14 a las #4, Ivan Perales M. escribió:
Hola buenas noches.

Estoy batallando con un escenario. Estoy migrando una base de datos de H2 database a postgresql ya que en algunas ocasiones falla por razones que no he podido debugear y como el tiempo es oro decidi a cambiar de base.

Todo muy bien excepto por una funcion que escribi, la cual hace lo siguiente:

Tengo una tabla con facturas, y cada factura tiene diferentes impuestos. Así una factura puede no tener impuestos, otras pueden tener 1 o 2 o 3 o N impuestos.

Entonces tengo una tabla con impuestos y tengo otra tabla intermedia donde relaciono la factura con sus impuestos. Como las facturas las muestro en un paginador, hago un query como:

select *, myfuncion('select impuesto, valor from tabla_intermedia where fac_id =' || id) from factura...

myfuncion se encarga de ejecuta el query que indico, el cual como ven retorna dos valores por cada impuesto, la clave del impuesto y el valor del mismo. La funcion creada en h2 database se encarga de crear un array y retornarlo. Por ejemplo si una factura tiene 2 impuestos: el valor resultante seria: {'impuesto1', 1243.23, 'Impuesto2', 543.43}. Este resultado lo proceso y lo muestra en una tabla.

Estoy tratando de crear esta misma funcionalidad en plpgsql, del cual soy completamente nuevo. Estube leyendo algo pero me surgio la siguiente duda: al crear la funcion necesito declarar el tipo de dato a regresar, pero seria un tipo de dato object por que van valores alfabeticos y numericos, y no encontre como poder usar este tipo de dato. Alguien de ustedes sabe como declarar el valor de retorno en la funcion? y aventurarme un poco mas, retornar un array bidimensional algo como:
{{'Impuesto1', 1243.23}
{'Impuesto2', 543.43}}

No importa mucho la manera en que se retorne, puedo actualizar la aplicacion, lo importante es que obtenga la información.

Saludos y gracias por su tiempo

--
Lindolfo Iván Perales Mancinas
Solo existen 10 tipos de personas en el mundo, las que saben binario y las que no.

Concurso "Mi selfie por los 5". Detalles en 
http://justiciaparaloscinco.wordpress.com

-
Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda@postgresql.org)
Para cambiar tu suscripci�n:
http://www.postgresql.org/mailpref/pgsql-es-ayuda

Responder a