usar proc. almacenados como interfaz para base de datos

Rodrigo Fuentealba darkprox en gmail.com
Mar Nov 27 13:33:32 CLST 2007


El 27/11/07, rodrigo ahumada <rodahummont en yahoo.com.ar> escribió:
> hola
>
> tengo una consulta de opinion
>
> resulta que en el lugar donde trabajo, se utiliza base de datos de una manera bien especial, como log de eventos. Las cosas que se le piden a la base de datos estan relativa% bien definidas, pero se trabaja con ella usando sentencias sql cocinadas a mano dentro de los programas.
>
> mi pregunta es:
>
> es buena idea hacer uso de procedimientos almacenados como interfaz para la base de datos?

Depende del caso y de lo que quieras lograr. Los procedimientos
almacenados son buenos cuando tienes muchos programas que hacen
algunas cosas de una forma específica, y esos programas interactúan
sobre una base de datos posible.

> es decir, buscar todas las sentencias sql que se usan el los programas, y asigna un procedimiento
> almacenado que las ejecute.
>
> las ventajas que pareciera tener serian:

> - en los programas en vez de usar " insert into A, B, C values (a, b, c)", usaria "exec inserta a, b, c", es menos que escribir (aunque igual hay que fijarse en los formatos de los datos)

Pero los procedimientos almacenados te permiten estandarizar errores,
por lo que te podrías fijar en escapar los datos (con algo como las
consultas preparadas de PostgreSQL, por ejemplo, o las clases de
Propel/Creole de PHP), pero de validar si te sirven dentro del
procedimiento almacenado.

> - permitiria utilizar otros motores de base de datos, o otros esquemas de tablas...

Otros motores no; el PL/SQL de Oracle no es igual que el PL/PgSQL de
PostgreSQL, y tampoco lo es si lo comparamos con el Transact-SQL de
SQL Server 2000. Otros esquemas de tablas sí.

Espero que estés hablando de PostgreSQL: las funciones, las reglas
(rules) y los triggers te ayudan bastantemente mucho en esta clase de
menesteres.

Saludos,

-- 
Rodrigo Fuentealba Cartes



Más información sobre la lista de distribución Linux