Re: [pgsql-es-ayuda] Error en función para devolver todos los records en un refcursor

From: Marcos Luis Ortiz Valmaseda <marcosluis2186(at)googlemail(dot)com>
To: Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org>
Cc: Ayuda <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: [pgsql-es-ayuda] Error en función para devolver todos los records en un refcursor
Date: 2011-08-18 21:56:40
Message-ID: CAJs-K1v7C7FBFCDjC9i2QqPqr0YRhQAZ4isURxsGhz4Yiy72PQ@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

No, esa aplicación está en PostgreSQL-8.1, y no puedo darme el lujo de
reescribir todos los procedimientos y usar una versión más actual
porque ahora no lo quieren hacer. Ya les dije que tarde o temprano,
deberían migrar a versiones actuales, pero ahora están algo
estancadados, esperando por decisiones que no le corresponden con los
que estoy trabajando, sino a la alta gerencia.

Ummm, entonces con el SET OF RECORD tampoco debería funcionar? esa
idea de que en la aplicación tener que especificarle los tipos de
nuevo, no sería muy factible.

Nosotros resolvimos algo parecido, creando tipos de datos creados por
nosotros que contienen exactamente lo que devolvería cada función y
así era más fácil la gestión con la dichosa aplicación de reportes.

Pero aquí están renuentes, ya les dije que la solución más factible era:
1- Migrar a PostgreSQL-9.0
2- Reescribir las funciones con todas las bondades de esta versión

Ya veremos que pasa. Cualquier sugerencia en la programación de las
funciones, es bienvenida.

Saludos y gracias de nuevo

El 18/08/11, Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org> escribió:
> Excerpts from Marcos Luis Ortiz Valmaseda's message of jue ago 18 12:03:25
> -0400 2011:
>> El 18 de agosto de 2011 11:10, Alvaro Herrera
>> <alvherre(at)alvh(dot)no-ip(dot)org>escribió:
>
>> > ¿Qué estás tratando de hacer? La verdad es que no veo el propósito de
>> > todo esto. Tomas una función que retorna un refcursor, luego abres ese
>> > refcursor, metes los resultados en otro refcursor y retornas el segundo
>> > refcursor ... ¿?
>
>> No, ya estoy cambiando eso, lo que debe devolver es un SET OF RECORD, y ya
>> la estoy cambiando para eso.
>
> Ya ... ¿funcionará realmente eso? Porque la consulta que invoque
> return_refcursor_fetch_all deberá especificar el tipo del resultado; si
> es un SETOF RECORD vas a tener que indicarle, en la aplicación, el
> nombre y tipo de cada columna del resultado.
>
>> El sentido principal es que estamos usando una aplicación para la
>> generación
>> de reporte, y la misma usa procedimientos almacenados en la base de datos,
>> pero
>> dicha base de datos, tiene todos los procedimientos programados que
>> devuelven un refcursor. La idea general es hacer una función que sirva
>> como
>> de proxy a dicho procedimientos y devolver todos los datos, no con
>> refcursor, sino como un set de datos, para el cual se le puedan aplicar
>> ORDER BY, GROUP BY, LIMIT, etc.
>
> No tengo claro cómo se irá a hacer esto, pero me imagino que el
> rendimiento no será bueno, si el tamaño del resultado es grande
> (ignorando el LIMIT que quieras aplicarle externamente, porque
> obviamente eso no se usará hasta después de haber ejecutado
> completamente la consulta dentro de la función).
>
> ¿Están convirtiendo una aplicación que ya está en SQL Server o Sybase?
>
> --
> Álvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org>
>

--
--
Marcos Luis Ortíz Valmaseda
Software Engineer (UCI)
Linux User # 418229
http://marcosluis2186.posterous.com
http://www.linkedin.com/in/marcosluis2186
https://fedoraproject.org/wiki/User:Marcosluis

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Jaime Casanova 2011-08-18 23:06:07 Re: Bolsa de trabajo SLP
Previous Message manuel antonio ochoa 2011-08-18 20:20:23 Bolsa de trabajo SLP