MARCO TERICO: Un Stored Procedure o Procedimiento Almacenado es un programa (o funcin) que se almacena fsicamente en una base de datos. La implementacin de un stored procedure vara de un gestor de bases de datos a otro. En la mayora de los casos, no obstante, los stored procedures permiten definir una API (capa de abstraccin) para que el gestor de bases de datos interacte con tablas u otros objetos de la base de datos, en vez de tener un cliente de la aplicacin interactuando directamente. IMPLEMENTACIN Realizar consultas SQL Insertar Actualizar Eliminar
Registros sobre los objetos de la base de datos de una manera transparente, desde el punto de vista del cliente de la aplicacin. Un Stored Procedure, permite agrupar en forma exclusiva parte de una tarea especfica que se desee realizar es decir el SQL apropiado para dicha accin. Ejecucin Los Procedimientos almacenados se ejecutan directamente en el servidor de base de datos. Usos Un uso comn es el encapsulamiento de un API para un proceso complejo o que podra requerir la ejecucin de varias consultas SQL, tales como la manipulacin de un gran
Guerra Yomara
ENERO - JULIO
conjunto de datos para producir un resultado resumido. Tambin pueden ser usados para el control de gestin de operaciones, y ejecutar procedimientos almacenados dentro de una transaccin de tal manera que las transacciones sean efectivamente transparentes para ellos. Cuando los procedimientos almacenados se aplican en la validacin de datos, y el control de la integridad dentro de la estructura de la base de datos se ejecutan a travs de los denominados tiggers. Ventajas 1. Simplificacin de la Gestin Los Procedimientos almacenados pueden permitir que la lgica del negocio se encuentre como una API en la base de datos, que puede simplificar la gestin de datos y reducir la necesidad de codificar la lgica en el resto de los programas cliente. 2. Seguridad Es mucho mejor usar Stored procedure por seguridad. Los procedimientos almacenados facilitan algunas tareas de administracin de seguridad y asignacin de permisos. 3. Centralizacin de la definicin Al formar parte de la base de datos los procedimientos almacenados estn en un lugar centralizado y pueden ser ejecutados por cualquier aplicacin que tenga acceso a la misma. 4. Reduccin del trfico de red Una sentencia formada por decenas, cientos o incluso miles de lneas de cdigo SQL puede escribirse como un procedimiento almacenado en el servidor y ejecutarse simplemente mediante el nombre de dicho procedimiento, en lugar de enviar todas las lneas de cdigo por la red desde el cliente hasta el servidor. 5. Encapsulamiento Los procedimientos almacenados encapsulan gran parte de la lgica del negocio a las aplicaciones que los utilizan. 6. Ejecucin centralizada en el Servidor Esta ejecucin puede verse como una ventaja o desventaja dependiendo de los recursos con los que se cuenta. La ventaja es que cuando est en accin, en respuesta a una peticin de usuario, el procedimiento almacenado corre directamente bajo el control del motor de bases de datos, generalmente en un servidor separado aumentando con ello, generalmente, la rapidez del procesamiento del requerimiento. 7. Reduccin de la escalabilidad
Guerra Yomara
ENERO - JULIO
Los procedimientos almacenados nos esclavizan al motor de base de datos. Para migrar de un gestor de base de datos con muchos procedimientos almacenados a otro, se deber reescribir casi la totalidad de los mismos. Como los stored procudures son procesos
Create procedure (nombre del procedimiento almacenado) Create proc (nombre del procedimiento almacenado) Si tenemos variables este es el lugar que les ubicamos antes de as As Begin Aqui ubicamos las sentencias o instrucciones que va a realizar el stored procedure End Como llamar a un stored procedure Con su nombre Con la sentencia exec (nombre del stored procedure) Con la sentencia excecute (nombre del stored procedure)
ENERO - JULIO
Guerra Yomara
Como eliminar un stored procedure Drop proc (nombre del stored procedure) Ejemplos
/*procedimineto para mostrar datos de una tabla*/ create procedure hola as begin select *from autor end
Como darme cuenta que esta implementado Refrescamos la base de datos Clic en programmabibily Stored procedures
Lo ejecutamos y obtenemos
Guerra Yomara
ENERO - JULIO
/*insertar datos en una tabla*/ create procedure insertobra @codobra varchar (3),@nomobra varchar (20), @resumen varchar (50), @precio int as insert into Obra values (@codobra,@nomobra, @resumen, @precio)
Guerra Yomara
ENERO - JULIO
/*como eliminar un registro*/ create procedure borrar @codigo varchar (3) as delete from Obra where Codobra=@codigo exec borrar O16
/*update*/
create procedure updateobra @codobra varchar (3),@nomobra varchar (20), @resumen varchar (50), @precio int as update obra set Codobra=@codobra, nomobra=@nomobra, resumen=@resumen, precio=@precio where Codobra=@codobra
Guerra Yomara
ENERO - JULIO
/*proce que me muestre el nombre*/ create proc getnombre @codsocio char (3) as begin select nomsocio, apesocio,codsocio from socio where codsocio=@codsocio end execute getnombre 'S03'
/*hacer operaciones*/ create begin select select select end procedure operaciones as count(*) as totalcolumnas from Obra sum (precio) as sumaprecio from obra avg (precio) as promedioprecio from Obra
exec operaciones
Guerra Yomara
ENERO - JULIO
Como vemos en este ejemplo cada sentencia se ejecuta y se presenta en una tabla diferente. /*procedure para obtener nombre, apellido, codosocio y garante con el genero y su estado civil*/
create proc getgenero @genero char (1), @estado varchar (10) as begin select nomsocio, apesocio,codsocio, codgarante from socio where genero=@genero and estcivil=@estado end execute getgenero 'M', 'soltero' execute getgenero 'M', 'casado' execute getgenero 'f ','soltero'
Guerra Yomara
ENERO - JULIO
/*para cambiar una procedure*/ /*como ya esta credo getgenero lo que hago es poner alter proce ejecuto y listo*/ Para cambiar una stored procedure debo solo colocar la palabra ALTER alter proc getgenero @genero char (1), @estado varchar (10) as begin select nomsocio, apesocio,codsocio, codgarante from socio where genero=@genero and estcivil=@estado order by nomsocio end
Se llama con el mismo nombre la modificacin es que en este nuevo stored procedure se ordenan los nombres
execute getgenero 'M', 'soltero'
Guerra Yomara
ENERO - JULIO
Podemos encriptar un stored procedure lo que cambia aqu es que una vez encriptados no se pueden editar. Antes de encriptar un stored procedure tenemos
Guerra Yomara
ENERO - JULIO
Si ahora encriptamos
alter proc getgenero @genero char (1), @estado varchar (10) with encryption as begin select nomsocio, apesocio,codsocio, codgarante from socio where genero=@genero and estcivil=@estado order by nomsocio end
Guerra Yomara
ENERO - JULIO
momento
de
ver
su
estructura
para
/*procedure con parametros de salida*/ create proc spgetgenero @genero1 varchar(1), @generocount int output as begin select @generocount = count (codsocio) from socio where genero=@genero1 end
Guerra Yomara
ENERO - JULIO
En este tipo de stored procedure se debe tener en cuenta que tenemos una variable y la varialbe de salida debe ser declarada en una nueva sentencia.
declare @generototal int execute spgetgenero 'm',@generototal output print @generototal
/*si no especifico que @genero total es output en la declaracion debo cambiar el codigo*/
Guerra Yomara
ENERO - JULIO
/*otra forma de obtener el mismo resultado*/ declare @generototal int execute spgetgenero @generocount = @generototal out, @genero1='m' print @generototal
/*salida de parametos y retorno de valores*/ create proc totalobra @total int out as begin select @total = count (codobra) from Obra end declare @total1 int execute totalobra @total1 out print @total1
create proc totalobra1 as begin return (select count(codobra) from obra) end
Guerra Yomara
ENERO - JULIO
Ahora comprobamos la existencia de parmetro y valores de la siguiente manera. Damos clic en el stored procedure En parmetros y se pueden visualizar
Para comprobar que est bien damos clic derecho en el stored procedure y damos clic en la opcin excecute stored procedure
Guerra Yomara
ENERO - JULIO
Guerra Yomara
ENERO - JULIO
Este stored procedure est bien puesto que nos devuelve el valor de 16 en el parmetro y cero como valor de retorno. Si no devuelve 0 el stored procedure est mal. Si deseamos ver la esturctura de un stored procedure utilizamos
sp_helptext totalobra
Guerra Yomara
ENERO - JULIO
Si deseamos modificar, copiamos esto en nuestro escritorio y obtenemos la estructura del stored procedure.
Guerra Yomara
ENERO - JULIO
Con la sentencia .
sp_help totalobra
CONCLUSIONES La elaboracin de un stored procedure hace que las consultas sean ms rpidas. Ahorramos lneas de cdigo al momento de crear un stored procedure y como se queda almacenado lo podemos utilizar y llamar fcilmente. Si deseamos ejecutar 2 o ms stored procedure lo que debemos hacer es colocar el nombre del stored procedure en el primero y los siguientes con la instruccin execute. Cuando hacemos nuestra base de datos podemos utilizar un stored procedured encriptado esto nos ayuda en la seguridad puesto que no se muestra el cdigo. La correcta manipulacin y elaboracin de un stored procedure nos ayuda a eliminar, insertar, modificar e ingresar datos a nuestra base de datos de una manera ms amigable.
Guerra Yomara
ENERO - JULIO
Guerra Yomara
ENERO - JULIO