Re: packages al estilo oracle

From: Terry Yapt <yapt(at)technovell(dot)com>
To: Jenaro Centeno Gómez <jcenteno(at)aldia(dot)com(dot)mx>
Cc: Alvaro Herrera <alvherre(at)commandprompt(dot)com>, Luis Felipe Aguilar Pereda <luchitodesigner(at)gmail(dot)com>, pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: packages al estilo oracle
Date: 2008-07-10 18:40:55
Message-ID: 487657B7.7080707@technovell.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Jenaro Centeno Gómez escribió:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> Pués a mi personalmente no terminan de agradarme y ya tengo mas de 14
> años utilizando esa base de datos. Sin embargo como comentas, quizá
> para procesos complejos puedan ser de utilidad, y por esto me interesa
> saber para que los quiere utilizar o emular Luis Felipe en PostgreSQL.
>
> Saludos.

Los packages son una buena herramienta "organizativa", sobre todo cuando
tienes centenares de funciones y procedimientos almacenados dentro de
una base de datos Oracle. Pero no solo es esto, que casi podría
considerarse cosmético (aunque, insisto, muy útil). Como dice Alvaro,
las variables globales al package que pueden ser aprovechadas por todas
las funciones/procedures/cursores/objetos (triggers, constantes, etc...)
de Oracle, vienen muy bien para solventar algunos problemas comunes
(tablas mutantes, por ejemplo). Quiza las rules de PostgreSQL sirvan
para algo parecido... pero lo ignoro, pues como no forman parte del
estandar, no las utilizo.

Y aunque efectivamente hay una cabecera y un cuerpo del package, con las
herramientas actuales, se gestionan de forma conjunta (aunque, he de
darte la razón, NO de forma única).

Pero los packages se hacen mucho más interesantes gracias a la capacidad
de Oracle (espero que se implemente pronto en PostgreSQL) de definir
COMMITS o ROLLBACKS parciales dentro de un procedimiento (o de un
package), o ejecutar un procedimiento de Oracle SIN commit y efectuar
este, dentro de la aplicación cliente (o ROLLBACK). De este modo, la
organización sube un peldaño más y permite tener puntos de
commit/rollback -gestión de errores- únicos dentro de una serie de
funciones/procedimientos. O, por ejemplo, dejar una transacción SIN
COMMIT y efectuar una transacción con COMMIT IMPLICITO (PRAGMA
transactions) (por ejemplo para la escritura de Log's), sin afectar a la
transacción padre que puede ser COMMIT/ROLLBACK, con independencia de
que el "Log" YA se haya escrito.

En fín, yo creo que hay muchas funcionalidades en los packages que son
excelentes.

Saludos.

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Laura Martinelli 2008-07-11 14:29:13 Ejecutar una función que crea una vista con dblink
Previous Message Jenaro Centeno Gómez 2008-07-10 17:24:53 Re: packages al estilo oracle