Ver Mensaje Individual
  #3 (permalink)  
Antiguo 30/06/2005, 15:25
Rodolfo Israel
Invitado
 
Mensajes: n/a
Puntos:
Pues mi opinion personal respecto al tema es simple:

1.- Cuando creas un Procedimientos Almacenado tu sentencia SQL es precompilada por el motor de bases de datos, de tal manera de que cada vez que esta es llamada no hace falta recompilar la sentencia sql para que pueda ejecutarse, solo le tienes que pasar los parametros necesarios si es que los necesitas para que se ejecute y regrese resultados, si no usaras procedimientos almacenados tu sentencia SQL siempre seria transportada a la base de datos, el motor de la base de datos la compilaria, la ejecutaria y te mandaria los resultados si este fuese el caso. Para empezar lde esta manera la informacion que viaja desde tu aplicacion hasta el servidor de BD es mas que si llamaras solamente a los procedimientos almacenados, luego, el proceso es un poco mas lento pues el motor se tendria que dar a la tarea de compilar toda la sentencia SQL y luego regresarte los resultados..

Ventajas: Es mas rápido y eficiente utilizar Procedimientos Almacenados y otra es la seguridad, por ahi lei alguna vez que es mas inseguro enviar la cadena SQL pues puede ser propenso a ataques de inyeccion de sentencias SQL en tus formas de captura, a diferencia de los procedimientos almacenados que son mas seguros en este aspecto.

Por ejemplo :

Imaginate que tienes una sentencia que te regresa el monto de la cuenta de un empleado de la siguente manera:

"Select monto FROM Empleados Where Id_Empleado = " + txtIdEmpleado.Text + ""

Entonces en el txtIdEmpleado podria escribir un Id_Empleado asi:

suponiendo que 1 es el Id

"1 Delete * FROM Empleados"

lo que daria por resultado:

"Select monto FROM Empleados Where Id_Empleado = 1 Delete * FROM Empleados"

¿que crees que pasaria si no validas cosas como estas?, a eso se le llama inyecion de código SQL, cosa a las que no son propensas los procedimientos almacenados pues ya estan precompilados, lo mas que podria pasar seria que te marcara una exepcion pues ese Id no existe.

En fin espero que mi explicación te pueda convencer.