RE:Procemientos almacenados Vs. querys embebidos
Esa e la visión de los programadores de aplicaciones, pero hay varias consideraciones para hacer:
- Los stored procedures se ejecutan siempre en servidor, y de esa forma permiten liberar las máquinas cliente de recursos. Esto hace que incluso si una aplicación cliente corre desde una máquina de baja performance, la respuesta pueda ser muy veloz si la base se encuentra en un servidor mucho más potente, porque el proceso de consulta no se realiza en el cliente, sino en el servidor.
- Los stored procedures son las formas más seguras de ejecutar una gran cantidad de operaciones, que no necesariamente son simples consultas de SELECT. Con ellos se realizan tareas de gran complejidad que requierirían una enorme cantidad de llamadas a la base y/u operaciones de la aplicación. Como los SP residen en la base y operan solamente en ella, el uso de SP libera recursos para la palicación que de otro modo reducirían la optimizaciuón de la aplicación.
- Como el uso de SP requiere solamente de permisos de EXECUTE, esto permite que se pueda administrar a los usuarios con mucha mas profundidad, restringiendo el acceso de los mismos a secciones críticas de la base. Esto mismo funciona para el caso de las VIEW.
- Los stored procedures son invulnerables al sql-injection, ya que solamente pueden recibir parámetros, y no contienen sentencias accesibles desde fuera. Si el parámetro es un sql-injection, el SP simplemente no opera, y en todo caso, no puede hacer más tareas que las que están programadas.
- Los SP solamente pueden ser programados y cargados en la base por usuarios de alto nivel, y sólo con permisos especiales pueden ser cargados en forma remota, lo que permite controlar incluso que puedan ser modificados por personas no autorizadas. Con esto te puedes asegurar que los que haces no puedan modificarse así nomas.
- Los SP no se copian en un backup manual si no sabes cómo hacerlo, por lo que solamente usando aplicaciones específicas o conociendo los comandos peudes acceder a su estrucutra.
Resumiendo: Si quieres aumentar la seguridad, evitar el sql-injection, incrementar la performance de las consultas, y realizar largas y complejas operaciones de consulta, USA STORED PROCEDURES.