Sei sulla pagina 1di 17

Programacin de Consultas SQL ADO.

Net

2012 DUOC Sede Antonio Varas. Todos los Derechos Reservados.

Procedimientos Almacenados
Definicin : Un procedimiento almacenado es una consulta SQL almacenada en una base de datos de Microsoft SQL Server y no en el cdigo de la aplicacin. Los procedimientos almacenados son ms seguros que el cdigo de consulta y a menudo su ejecucin es ms rpida. El control SqlDataSource, puede recuperar los resultados del procedimiento almacenado y servir como origen de datos del control GridView.
2012 DUOC Sede Antonio Varas. Todos los Derechos Reservados.

Procedimientos Almacenados (Stored Procedures)


Un procedimiento almacenado es un a consulta en lenguaje T-SQL (hablando de Microsoft SQL Server) que se encuentra almacenada fsicamente como un objeto de la base de datos. La ventaja de un procedimiento almacenado es que al ser ejecutado, en respuesta a una peticin de usuario, es ejecutado directamente en el motor de bases de datos
2012 DUOC Sede Antonio Varas. Todos los Derechos Reservados.

Como tal, posee acceso directo a los datos que necesita manipular y slo necesita enviar sus resultados de regreso al usuario, deshacindose de la sobrecarga resultante de entrada y salida de informacin.

Los usos tpicos para los procedimientos almacenados incluyen la validacin de datos siendo integrados a la estructura de base de datos, son mas conocidos como disparadores o triggers.
2012 DUOC Sede Antonio Varas. Todos los Derechos Reservados.

Sintaxis de Procedimientos almacenados.

2012 DUOC Sede Antonio Varas. Todos los Derechos Reservados.

Ejemplo

El procedimiento almacenado quedar guardado como un objeto de la base de datos. Si es requerida alguna modificacin al cdigo que lo define, se debe utilizar la instruccin ALTER en lugar de CREATE, como se muestra en el siguiente ejemplo:

2012 DUOC Sede Antonio Varas. Todos los Derechos Reservados.

Procedimientos Almacenados
Una vez que el procedimiento ha sido creado en la base de datos, este puede ser accedido como tal mediante las clases de acceso a datos (SqlCommand) desde el cdigo .Net, para ello se debe especificar que el tipo de comando es CommandType.StoredProcedure

2012 DUOC Sede Antonio Varas. Todos los Derechos Reservados.

Recomendaciones y nomenclaturas

Es recomendado mantener algn estndar en la definicin de los nombres de los procedimientos almacenados. La funcin principal que se les da a los procedimientos, tiene relacin con un concepto llamado CRUD que viene de un acrnimo en ingls para indicar: Creacin (Create), Lectura (Read), Actualizacin (Update) y Eliminacin (Delete). Por lo tanto la nomenclatura bsica a definir debera estar guiada por estas definiciones. Para el caso de normar a nivel de los ejemplos y la codificacin utilizaremos los siguientes prefijos para nuestros procedimientos:

2012 DUOC Sede Antonio Varas. Todos los Derechos Reservados.

Recomendaciones y nomenclaturas

2012 DUOC Sede Antonio Varas. Todos los Derechos Reservados.

Acceso a datos en ASP.NET con Procedimientos


La aplicacin desarrollada para conectarse a la base de datos en la clase anterior se vali de la capacidad que nos provee el control SQLDataSource como fuente de datos y que permite generar los Script SQL, para la recuperacin y mantencin de informacin. Estos script auto-generados, fueron utilizados por el control GridView y DropDownList, habilitando las funciones en base a la configuracin realizada al SQLDataSource. Ahora poseemos procedimientos almacenados que encapsulan en la Base de Datos la lgica de ejecucin SQL, con lo cual podemos utilizar estos para poder realizar las funciones, eliminando la dependencia de los script generados en la pgina ASPX.
2012 DUOC Sede Antonio Varas. Todos los Derechos Reservados.

Script autogenerados.

2012 DUOC Sede Antonio Varas. Todos los Derechos Reservados.

Scripts autogenerados
Lo interesante del cdigo mostrado, es que identificamos los nombres de las propiedades donde se carga la sentencia SQL, misma que podemos utilizar para enlazar la fuente de datos a los procedimientos creados para cada caso. Adems tambin se visualiza la definicin de los respectivos parmetros asociados a cada comando, estando estos definidos como valores planos rescatados desde el control enlazado o de controles externos que pueden proveer el valor para el parmetro, como es el caso del DropDownList que provee el parmetro para el filtro (Where) del comando de seleccin.

2012 DUOC Sede Antonio Varas. Todos los Derechos Reservados.

Control SqlDataSource

2012 DUOC Sede Antonio Varas. Todos los Derechos Reservados.

Control SqlDataSource

2012 DUOC Sede Antonio Varas. Todos los Derechos Reservados.

Control SqlDataSource
La interfaz de configuracin del SQLDataSource en las Tareas del control, nos provee una interaccin amigable para poder realizar estas configuraciones, pero no se debe perder de vista el hecho que ellas pueden ser asignadas mediante las respectivas propiedades. Para ello nos guiamos en el asistente y al momento de indicar la sentencia SQL del comando Select, seleccionamos la opcin para dar nosotros la instruccin SQL o procedimiento almacenado, configurando en la ventana siguiente el procedimiento almacenado para cada una de las instrucciones del CRUD. Si alguno de los procedimientos requiere algn parmetro especial no posible de identificar, este ser solicitado por separado antes de terminar con el asistente. Otro aspecto a distinguir entre la configuracin por interfaz y por propiedades directas en el cdigo es que las propiedades <accin>Command y <accin>Parameters se presentan en la ventana de propiedades del control como <accin>Query.
2012 DUOC Sede Antonio Varas. Todos los Derechos Reservados.

Ventajas de usar Procedimientos almacenados


Compilacin: La primera vez que se invoca un SP, el motor lo compila y a partir de ah, se sigue usando la versin compilada del mismo, hasta que se modifique o se reinicie el servicio de SQL. Esto significa que se tendr un mejor rendimiento que las consultas directas que usan cadenas con las instrucciones T-SQL, que se compilan cada vez que se invocan.

Automatizacin: si tenemos un conjunto de instrucciones T-SQL, las cuales queremos ejecutar de manera ordenada, un SP es la mejor manera de hacerlo.
Administracin: cuando realizamos aplicaciones con un gran numero de lneas de cdigo, y queremos hacer cambios, solo implica modificar un SP y no toda la aplicacin, lo que significa solo cambiamos los SP en el servidor y no tenemos que actualizar la aplicacin en todos los equipos cliente.

2012 DUOC Sede Antonio Varas. Todos los Derechos Reservados.

Ventajas de usar Procedimientos almacenados


Seguridad: una parte importante es que a los usuarios de nuestra aplicacin, solo les proporcionamos los permisos para ejecutar los procedimientos almacenados y no el acceso a todos los objetos de la base. Es decir, si en nuestra aplicacin encuentran una vulnerabilidad como SLQ Injection no se podr explotar ejecutando SQL directamente. Programabilidad: Los SP admiten el uso de variables y estructuras de control como IF, Bucles, Case, etc. adems del manejo de transaccin y permite controlar excepciones. Y cuando trabajamos con SP CLR podemos hacer uso de cualquier lenguaje .NET como lo son C# y VB.NET. Trafico de Red: Pueden reducir el trafico de la red, debido a que se trabaja sobre el motor (en el servidor), y si una operacin incluye hacer un trabajo de lectura primero y en base a eso realizar algunas operaciones, esos datos que se obtienen no viajan por la red.
2012 DUOC Sede Antonio Varas. Todos los Derechos Reservados.