Anda di halaman 1dari 21

BASE DE DATOS

Guerra Yomara Ing. Henry Echeverria


23-5-2013

ESCUELA POLITCNICA NACIONAL

Ingeniera en Electrnica y Redes de la Informacin BASE DE DATOS

STORED PROCEDURE MySQL


OBJETIVOS: Implementar procedimientos almacenados en una base de batos creada en SQL Sever. Mostrar las ventajas y desventajas de Stored Procedure MySQL. Implementar ejemplos en nuestra base de datos. Ejemplos de Stored Procedure (SP) pero pasndole a parmetros, los parmetros sirven para hacer ms flexible y til a los SP. Emplear variables con Stored Procedure.

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

ESCUELA POLITCNICA NACIONAL

Ingeniera en Electrnica y Redes de la Informacin BASE DE DATOS

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

ESCUELA POLITCNICA NACIONAL

Ingeniera en Electrnica y Redes de la Informacin BASE DE DATOS

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

Como crear un stored procedure La creacin puede ser con la sentencia

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

ESCUELA POLITCNICA NACIONAL

Ingeniera en Electrnica y Redes de la Informacin BASE DE DATOS

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

ESCUELA POLITCNICA NACIONAL

Ingeniera en Electrnica y Redes de la Informacin BASE DE DATOS

/*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)

Sin ejecutar nuestro stored procedure

exec insertobra 'O17','Novela','Misterio',180.50

Guerra Yomara

ENERO - JULIO

ESCUELA POLITCNICA NACIONAL

Ingeniera en Electrnica y Redes de la Informacin BASE DE DATOS

/*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

ESCUELA POLITCNICA NACIONAL

Ingeniera en Electrnica y Redes de la Informacin BASE DE DATOS

exec updateobra 'O17','Breaking Dawn','novela',60.25

/*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

ESCUELA POLITCNICA NACIONAL

Ingeniera en Electrnica y Redes de la Informacin BASE DE DATOS

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

ESCUELA POLITCNICA NACIONAL

Ingeniera en Electrnica y Redes de la Informacin BASE DE DATOS

execute getgenero 'f', 'casado'

/*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

ESCUELA POLITCNICA NACIONAL

Ingeniera en Electrnica y Redes de la Informacin BASE DE DATOS

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

ESCUELA POLITCNICA NACIONAL

Ingeniera en Electrnica y Redes de la Informacin BASE DE DATOS

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

ESCUELA POLITCNICA NACIONAL

Ingeniera en Electrnica y Redes de la Informacin BASE DE DATOS

Como esta encriptado al modificarlo nos muestra

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

ESCUELA POLITCNICA NACIONAL

Ingeniera en Electrnica y Redes de la Informacin BASE DE DATOS

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*/

Como vemos no tiene la sentencia out al final.


declare @generototal int execute spgetgenero 'm',@generototal if (@generototal is null) print '@generocount is null' else print '@generocount is not null'

Guerra Yomara

ENERO - JULIO

ESCUELA POLITCNICA NACIONAL

Ingeniera en Electrnica y Redes de la Informacin BASE DE DATOS

/*ahora si especifico que es @generototal out obtengo*/

/*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

ESCUELA POLITCNICA NACIONAL

Ingeniera en Electrnica y Redes de la Informacin BASE DE DATOS

declare @total2 int execute @total2=totalobra1 select @total2

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

ESCUELA POLITCNICA NACIONAL

Ingeniera en Electrnica y Redes de la Informacin BASE DE DATOS

Guerra Yomara

ENERO - JULIO

ESCUELA POLITCNICA NACIONAL

Ingeniera en Electrnica y Redes de la Informacin BASE DE DATOS

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

ESCUELA POLITCNICA NACIONAL

Ingeniera en Electrnica y Redes de la Informacin BASE DE DATOS

Si deseamos modificar, copiamos esto en nuestro escritorio y obtenemos la estructura del stored procedure.

Con este comando


sp_depends totalobra

podemos ver de que tablas depende nuestro stored procedure

Guerra Yomara

ENERO - JULIO

ESCUELA POLITCNICA NACIONAL

Ingeniera en Electrnica y Redes de la Informacin BASE DE DATOS

Con la sentencia .
sp_help totalobra

Podemos ver el tipo de sored procedure que tenemos.

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

ESCUELA POLITCNICA NACIONAL

Ingeniera en Electrnica y Redes de la Informacin BASE DE DATOS

Guerra Yomara

ENERO - JULIO

Anda mungkin juga menyukai