procedimiento almacenado

22
 Informe de Laborat orio Implementac ión de bases de datos Tema: Procedimientos Almacenados RESUMEN El presente laboratorio consiste en indagar sobre procedimientos almacenados desde su generalidad hasta ejemplos específicos, partiendo de una base teórica conceptual para afia nzar los conocimientos previos que tengan los participantes La investigación se realizara en dos partes: 1) La primera parte tratara sobre la concepción, creación, implementación y seguridad de procedimientos alma cenados 2) Uso práctico de los procedimientos almacenados para insertar, modificar y eliminar registros Con la presente investig ación se espera conocer y afianzar el uso de procedimientos almacenados en nuestros sistemas que contengan base de datos para hacer transacciones más limpias en código , rapidez y seguridad al ejecutarla. Para ello el equipo encargado del desarroll o del presente laboratorio está conformad o por 7 personas cuyos roles se han definidos para mejor desarrollo del laboratorio.  Angulo Méndez Angelo Rafael Salvador  Levano Castilla Carlos Miguel  Quispe Arcos Hans  Donayre Chacaltana Robert  Pardo Figueroa Herencia Jhonatan Carlos Daniel  Pillpe Leon William  Ramírez Gamboa Marlon En el proceso de desarrollo de investigación y ejecución del laboratorio se usara como recursos el gestor de base de datos SQL Server 2008, el tiempo recomendado para el desarrollo del laboratorio es de 10 minutos por laboratorio y el tiempo que ud requiera para asimilar bien la teoría. Dicho punto es fundamental para poder proseguir con los ejercicios, lea atentamente cada indicación y teoría, no intente avanzar a otro punto sin antes haber asimilado el punto anterior. Con respecto a los recursos financieros y el gasto que implica desarrollar el laboratorio solo será de que Ud. cuente con la licencia necesaria para ejecutar el SQL Sever Conocimientos previos requeridos:  Manejo de Transact SQL para la implementación de consultas estructurada s  Manejo y conocimientos del gestor de base de datos SQL S erver  Palabras clave: Ejemplo: Bases de Datos . SQL Server 2008.

Upload: levano-castilla-carlos

Post on 10-Jul-2015

5.894 views

Category:

Documents


0 download

DESCRIPTION

Es nuestro trabajo para el curso de Implementacion de Basde de Datos

TRANSCRIPT

Page 1: Procedimiento Almacenado

5/10/2018 Procedimiento Almacenado - slidepdf.com

http://slidepdf.com/reader/full/procedimiento-almacenado 1/22

 

Informe de Laboratorio

Implementación de bases de datos

Tema: Procedimientos Almacenados

RESUMEN

El presente laboratorio consiste en indagar sobre procedimientos almacenados desde su generalidad hasta

ejemplos específicos, partiendo de una base teórica conceptual para afianzar los conocimientos previos que

tengan los participantes

La investigación se realizara en dos partes:

1)  La primera parte tratara sobre la concepción, creación, implementación y seguridad de

procedimientos almacenados

2)  Uso práctico de los procedimientos almacenados para insertar, modificar y eliminar registros

Con la presente investigación se espera conocer y afianzar el uso de procedimientos almacenados en

nuestros sistemas que contengan base de datos para hacer transacciones más limpias en código , rapidez yseguridad al ejecutarla.

Para ello el equipo encargado del desarrollo del presente laboratorio está conformado por 7 personas cuyos

roles se han definidos para mejor desarrollo del laboratorio.

  Angulo Méndez Angelo Rafael Salvador

  Levano Castilla Carlos Miguel

  Quispe Arcos Hans

  Donayre Chacaltana Robert

  Pardo Figueroa Herencia Jhonatan Carlos Daniel

  Pillpe Leon William

  Ramírez Gamboa Marlon

En el proceso de desarrollo de investigación y ejecución del laboratorio se usara como recursos el gestor de

base de datos SQL Server 2008, el tiempo recomendado para el desarrollo del laboratorio es de 10 minutos

por laboratorio y el tiempo que ud requiera para asimilar bien la teoría. Dicho punto es fundamental para

poder proseguir con los ejercicios, lea atentamente cada indicación y teoría, no intente avanzar a otro punto

sin antes haber asimilado el punto anterior.

Con respecto a los recursos financieros y el gasto que implica desarrollar el laboratorio solo será de que Ud.

cuente con la licencia necesaria para ejecutar el SQL Sever

Conocimientos previos requeridos:

  Manejo de Transact SQL para la implementación de consultas estructuradas 

  Manejo y conocimientos del gestor de base de datos SQL Server 

Palabras clave: Ejemplo: Bases de Datos. SQL Server 2008.

Page 2: Procedimiento Almacenado

5/10/2018 Procedimiento Almacenado - slidepdf.com

http://slidepdf.com/reader/full/procedimiento-almacenado 2/22

 

 

1.  INTRODUCCION

Desde que el hombre comenzó a utilizar medios digitales para almacenar su información

 

comenzó a enfrentarse con problemas para hacer mas práctico este proceso, es lógico pensar

 

que desde la utilización de los archivos ( que son los antecesores de las bases de datos ) se

 

les fueron integrando algunas mejoras hasta llegar a la concepción que actualmente se

 

tienen de base de datos, al paso del tiempo las empresas de la industria de software enespecial la relacionada con las bases de datos incorporaron mecanismos como los

 

mencionados en el sección 2.2 hasta llegar paulatinamente a incorporar, los procedimientosalmacenados.

Los procedimientos almacenados no son nuevos en la industria de las bases de datos, como referencia

se tiene a ORACLE, que presentó PL/SQL 2, su implementación de un lenguaje procedimental para SQL,

esto por el año de 1991, SYBASE, PROSTGRESSQL Y DB2 están entre los otros DBMS que en breve

siguieron este tan socorrido lenguaje procedimental para sentencias SQL.

A la publicación de este documento es MYSQL el más reciente poseedor de procedimientos

almacenados, esto invita a algunos expertos en la materia a mencionar que con esta incorporación esteDBMS ha llegado a su mayoría de edad, aunque sin aventurarse a mencionar que pudiera ser una

competencia seria para los grandes en esta rama como lo son ORACLE Y SQLSERVER.

Cubrir las diferentes necesidades de los usuarios de un DBMS debe de ser la filosofía a seguir de la

industria de las bases de datos y este comentario es seguro que no pasó desapercibido por los

desarrolladores ya que la totalidad de las bases de datos están haciendo o hicieron esfuerzos por

incorporar los procedimientos almacenados a su software. Y se menciona de esta manera porque en

realidad en estos tiempos en los que gran parte de la información del mundo se encuentra alojada en

BD esto fue una necesidad, como lo pueden corroborar los capítulos que continúan.

La tendencia de las bases de datos actualmente va encaminada a darle más conocimiento a las bases

de datos que a la aplicación, esto quiere decir que el cliente esté enterado lo menos posible de la

estructura lógica de la DB, o al menos esto muestra la clara incorporación de algunos elementos como

la integridad referencial, actualización y eliminación en cascada, disparadores, UDF´S y ahora

procedimientos almacenados, los cuales realizan labores que antes eran propias de las aplicaciones

cliente.

Los procedimientos almacenados son una herramienta que todo desarrollador debe tener en cuenta

siempre, ya que proporcionan un rendimiento en términos de velocidad e incrementan la seguridad en

su sistema de base de datos, es por ello que su empleo en los diferentes proyectos incrementa la

calidad del desarrollo de software. Ahora se muestra la definición de un procedimiento almacenado.

“Un procedimiento almacenado es un conjunto de comandos SQL que pueden almacenarse en el

servidor y se ejecutan en él cuando un usuario con permisos para ello lo solicite”  

2. OBJETIVOS

  Aprender y usar procedimientos almacenados para tareas comunes en sistemas

  Gestionar correctamente procedimientos almacenados

Page 3: Procedimiento Almacenado

5/10/2018 Procedimiento Almacenado - slidepdf.com

http://slidepdf.com/reader/full/procedimiento-almacenado 3/22

 

 

3. MARCO CONCEPTUAL

3.1) ¿Que son procedimientos almacenados?

Un procedimiento es un subprograma que ejecuta una acción específica y que no devuelve ningún

valor. Un procedimiento tiene un nombre, un conjunto de parámetros (opcional) y un bloque decódigo. 

La sintaxis de un procedimiento almacenado es la siguiente:

CREATE [OR REPLACE] 

PROCEDURE <procedure_name> [(<param1> [IN|OUT|IN OUT] <type>,

<param2> [IN|OUT|IN OUT] <type>, ...)]

IS

-- Declaracion de variables locales 

BEGIN 

-- Sentencias[EXCEPTION]

-- Sentencias control de excepcion

END [<procedure_name>]; 

El uso de OR REPLACE permite sobreescribir un procedimiento existente. Si se omite, y el

procedimiento existe, se producirá, un error. 

La sintaxis es muy parecida a la de un bloque anónimo, salvo porque se reemplaza la

seccion DECLARE por la secuencia PROCEDURE ... IS en la especificación del procedimiento. 

Debemos especificar el tipo de datos de cada parámetro. Al especificar el tipo de dato del

parámetro no debemos especificar la longitud del tipo. 

Los parámetros pueden ser de entrada (IN), de salida (OUT) o de entrada salida (IN OUT). El valor

por defecto es IN, y se toma ese valor en caso de que no especifiquemos nada.

CREATE OR REPLACE 

PROCEDURE Actualiza_Saldo(cuentaNUMBER,

new_saldo NUMBER)

IS

-- Declaracion de variables locales 

BEGIN 

-- SentenciasUPDATE SALDOS_CUENTAS

SET SALDO = new_saldo,

FX_ACTUALIZACION = SYSDATE 

WHERE CO_CUENTA = cuenta;

END Actualiza_Saldo;  

Page 4: Procedimiento Almacenado

5/10/2018 Procedimiento Almacenado - slidepdf.com

http://slidepdf.com/reader/full/procedimiento-almacenado 4/22

 

También podemos asignar un valor por defecto a los parámetros, utilizando la clausula DEFAULT 

o el operador de asiganción (:=) .

CREATE OR REPLACE 

PROCEDURE Actualiza_Saldo(cuentaNUMBER,

new_saldo NUMBER DEFAULT 10 )IS

-- Declaracion de variables locales 

BEGIN 

-- Sentencias

UPDATE SALDOS_CUENTAS

SET SALDO = new_saldo,

FX_ACTUALIZACION = SYSDATE 

WHERE CO_CUENTA = cuenta;

END Actualiza_Saldo;

Una vez creado y compilado el procedimiento almacenado podemos ejecutarlo. Si el sistema nosindica que el procedimiento se ha creado con errores de compilación podemos ver estos errores de

compilación con la orden SHOW ERRORS en SQL *Plus.

Existen dos formas de pasar argumentos a un procedimiento almacenado a la hora de ejecutarlo

(en realidad es válido para cualquier subprograma). Estas son:

Notación posicional: Se pasan los valores de los parámetros en el mismo orden en que el procedure

los define.

BEGIN

Actualiza_Saldo(200501,2500);

COMMIT; 

END;

Notación nominal: Se pasan los valores en cualquier orden nombrando explicitamente el

parámetro.

BEGIN

Actualiza_Saldo(cuenta => 200501,new_saldo => 2500);

COMMIT; 

END; 

3.2) Propósito y ventajas de los procedimientos almacenados 

Los procedimientos almacenados proporcionan ventajas de performance, un marco de trabajo,

y mayores capacidades de seguridad. La mejora en el rendimiento se logra a través de un

almacenamiento local (en la base de datos), código precompilado, y manejo de

cachés (almacenamientos temporarios). El marco de programación se logra a través de

construcciones comunes de programación tales como parámetros de entrada/salida y

reutilización de los procedimientos. Las capacidades de seguridad incluye encriptación y

Page 5: Procedimiento Almacenado

5/10/2018 Procedimiento Almacenado - slidepdf.com

http://slidepdf.com/reader/full/procedimiento-almacenado 5/22

 

limitaciones de privilegios que permiten mantener a los usuarios fuera de la vista de la

estructura de la base de datos subyacente, mientras se los habilita a ejecutar procedimientos

almacenados que actúan sobre la base de datos.

Rendimiento 

Cada vez que un comando Transact-SQL, o conjunto de comandos, es enviado el servidor parasu procesamiento, el servidor debe determinar si el remitente tiene suficientes privilegios para

ejecutar esos comandos y si los comandos son válidos. Una vez que los permisos y la sintaxis de

los comandos se han verificado, SQL Server construye un plan de ejecución para procesar el

pedido.

Los procedimientos almacenados son más eficientes en parte porque el procedimiento es

almacenado en el SQL Server cuando se crea. La sintaxis de los comandos contenidos en un

procedimiento almacenado se comprueba que este libre de errores antes de ser guardado. El

nombre del procedimiento almacenado se almacena en la tabla SysObjects, mientras que el

texto del procedimiento se guarda en la tabla SysComments. Por otro lado, invocar al

procedimiento almacenado implica ejecutar un solo comando en vez de cientos de comandos

que un procedimiento almacenado podría contener.

La primera vez que se ejecuta el procedimiento, se crea un plan de ejecución y se compila al

procedimiento almacenado. Los procesamientos subsecuentes del procedimiento almacenado

son mucho más rápidos ya que el SQL Server no vuelve a controlar la sintaxis, ni recrea un plan

de ejecución, ni se recompila el procedimiento. Por último se verifica el caché por si ya existe

un plan de ejecución para ese procedimiento antes de generar un nuevo plan de ejecución.

La relativa pérdida de rendimiento producida por ubicar los planes de ejecución de los

procedimientos almacenados en el caché de procedimiento se reduce ya que los planes de

ejecución para todos los comandos SQL se guardan ahora en el caché de procedimientos. Por

lo que un comando Transact-SQL tratará de utilizar un plan de ejecución ya existente en todos

casos posibles.

Marco de programación 

Una vez que se crea un procedimiento almacenado, puede ser llamado todas las veces que sea

necesario. Esta capacidad provee modulación y habilita la reutilización del código. La

reutilización del código mejora el mantenimiento de la base de datos al aislar la base de datos

de los cambios en las prácticas del negocio. Si las reglas de negocios cambian en una

organización, se puede modificar a los procedimientos almacenados para cumplir con las

nuevas reglas de negocio. Todas las aplicaciones que llaman a esos procedimientos

almacenados cumplirán con la nuevas reglas, sin tener que ser directamente modificados.

Tal y como otros lenguajes de programación, los procedimientos almacenados pueden aceptar

parámetros de ingreso, retornar parámetros de salida, producir información de

retroalimentación de la ejecución en la forma de códigos de estatus y texto descriptivo, y

llamar a otros procedimientos. Por ejemplo, un procedimiento almacenado puede retornar un

código de estatus a un procedimiento que lo llamó para que este procedimiento realice una

operación según el código recibido.

Page 6: Procedimiento Almacenado

5/10/2018 Procedimiento Almacenado - slidepdf.com

http://slidepdf.com/reader/full/procedimiento-almacenado 6/22

 

Los desarrolladores de software pueden escribir sofisticados en un lenguaje como el C++;

luego, se puede utilizar un tipo especial de procedimiento almacenado, denominado

procedimiento almacenado extendido, para invocar al programa desde dentro del SQL Server.

Ante cualquier tarea simple, se debería escribir un procedimiento almacenado. Mientras más

genérico sea el procedimiento más útil será para muchas bases de datos. Por ejemplo; el

procedimiento almacenado sp_rename cambia el nombre de un objeto creado por el usuario,tal como una tabla, una columna o un tipo de datos definido por el usuario en la base de datos

actual, pudiéndose aplicar a cualquier base de datos.

Seguridad 

Otro capacidad importante de los procedimientos almacenados es que mejoran la seguridad a

través de la encriptación y el aislamiento. Los usuarios de las bases de datos pueden tener

permisos de ejecutar un procedimiento almacenado sin tenerlos para acceder directamente a

los objetos de la bases de datos sobre las que opera el procedimiento almacenado. Además un

procedimiento almacenado puede ser encriptado cuando se lo crea o modifica inhabilitando a

los usuarios a leer los comandos Transact-SQL contenidos en el procedimiento almacenado.

Estas capacidad de seguridad permiten aislar la estructura de la base de datos del usuario de labase de datos, con la consiguiente ganancia en seguridad. 

3.3) Categorías de procedimientos almacenados

En la actualidad existes cinco categorías de procedimientos almacenados, entre los que podemos

mencionar:

  Procedimientos almacenados del sistema

  Procedimientos almacenados locales

  Procedimientos almacenados temporarios

  Procedimientos almacenados extendidos

  Procedimientos almacenados remotos.

o  Procedimientos almacenados del sistema 

Son procedimientos propios del sistema que son almacenados en la base de datos master y son

identificados con el prefijo sp. Entre las tareas que realizan están la de soportar aplicaciones

externas para datos de las tablas del sistema, procedimientos para la administración de base de

datos y funciones de seguridad 

o  Procedimientos almacenados locales 

Son usualmente almacenados en una base de datos, diseñadas por el desarrollador de base de

datos para tareas comunes propias del sistema y de las necesidades del negocio, también se

puede usar para crear tareas personalizadas en base a procedimientos del sistema

Procedimientos almacenados temporarios Son similares a los procedimientos almacenados locales pero existe solo hasta que se cierre la

conexión que lo creo son almacenados en la base de datos TempDb.

Hay tres tipos de procedimientos almacenados temporarios:

Locales (también llamados privados), globales, y procedimientos almacenados en TempDB. Un

procedimiento almacenado temporario local siempre comienza con #, un procedimiento

almacenado temporario global siempre comienza con ##.os procedimientos almacenados

temporarios creados directamente en la TempDB son diferentes a los procedimientos

almacenados locales y globales en lo siguiente:

Page 7: Procedimiento Almacenado

5/10/2018 Procedimiento Almacenado - slidepdf.com

http://slidepdf.com/reader/full/procedimiento-almacenado 7/22

 

Se pueden configurar permisos para ellos.

Existen aún después que la conexión que los creó se terminan

No son removidos hasta que el SQL Server no sea apagado.

o  Procedimientos almacenados extendidos 

Usan un programa externo, compilado como un DLL para expandir las capacidades de un

procedimiento almacenado. La mayoría de los procedimientos almacenados extendidos usan el

prefijo xp_ como un convención de nombre. Sin embargo, hay algunos procedimientos

almacenados extendidos que comienzan con el prefijo sp_, y hay algunos procedimientos

almacenados del sistema que no son procedimientos extendidos y usan el prefijo xp_. Por lo

tanto, no se puede depender sobre convención de nombres para identificar procedimientos

almacenados del sistema y procedimientos almacenados extendidos.

3.4) Tipos de procedimientos almacenados

a.  Procedimiento sin parámetros. Como su nombre lo dice son procedimientos que no

necesitan ningún parámetro extra para ser ejecutado 

Ejemplo:

CREATE PROCEDURE spSumaSinParametros AS

--Declaracion de variables

DECLARE @Numero1 FLOAT,

@Numero2 FLOAT,

@Resultado FLOAT,

@Operacion NVARCHAR(25)

--Asignacion de valores iniciales

SET @Numero1 = 5.55

SET @Numero2 = 15

--Operacion.

--Nota: Se puede hacer uso de SELECT y/o SET para la asignacion de valores a las variables.

SELECT @Resultado = ISNULL(@Numero1, 0) + ISNULL(@Numero2, 0)

SET @Operacion = CAST(@Numero1 AS VARCHAR) + ' + ' + CAST(@Numero2 AS VARCHAR) + ' 

= ' + CAST(@Resultado AS VARCHAR)

--Realizar un select con el resultado de la operacion.

SELECT @Numero1 AS Numero1, @Numero2 AS Numero2, @Resultado AS Resultado,

@Operacion AS Operacion

GO

b.  Procedimiento con parámetros de entrada. Como su nombre lo dice son

procedimientos que no necesitan algún parámetro extra para ser ejecutado como una

variable de entrada. 

Ejemplo: 

CREATE PROCEDURE spSumaConParametros @Numero1 FLOAT,

@Numero2 FLOAT AS

--Declaracion de variables

DECLARE 

Page 8: Procedimiento Almacenado

5/10/2018 Procedimiento Almacenado - slidepdf.com

http://slidepdf.com/reader/full/procedimiento-almacenado 8/22

 

@Resultado FLOAT,

@Operacion NVARCHAR(25)

--Operacion.

--Nota: Se puede hacer uso de SELECT y/o SET para la asignacion de valores a las

variables.

SELECT @Resultado = ISNULL(@Numero1, 0) + ISNULL(@Numero2, 0)SET @Operacion = CAST(@Numero1 AS VARCHAR) + ' + ' + CAST(@Numero2 AS

VARCHAR) + ' = ' + CAST(@Resultado AS VARCHAR)

--Realizar un select con el resultado de la operacion.

SELECT @Numero1 AS Numero1, @Numero2 AS Numero2, @Resultado AS

Resultado, @Operacion AS Operacion

GO

c.  Procedimiento con parámetros de salida. Como su nombre lo dice son

procedimientos que no necesitan algún parámetro extra para ser ejecutado conocida

como variable de salida donde almacenar el resultado. 

Ejemplo: CREATE PROCEDURE spSumaConParametroDeSalida

@Numero1 FLOAT,

@Numero2 FLOAT,

@Resultado FLOAT OUTPUT 

 AS

--Declaracion de variables

DECLARE @Operacion NVARCHAR(25)

--Operacion.

--Nota: Se puede hacer uso de SELECT y/o SET para la asignacion de valores a las variables.

SELECT @Resultado = ISNULL(@Numero1, 0) + ISNULL(@Numero2, 0)

SET @Operacion = CAST(@Numero1 AS VARCHAR) + ' + ' + CAST(@Numero2 AS VARCHAR) + ' = ' + CAST(@Resultado AS VARCHAR)

--Realizar un select con el resultado de la operacion.

SELECT @Numero1 AS Numero1, @Numero2 AS Numero2, @Operacion AS Operacion

GO

Page 9: Procedimiento Almacenado

5/10/2018 Procedimiento Almacenado - slidepdf.com

http://slidepdf.com/reader/full/procedimiento-almacenado 9/22

 

4) Procedimientos a seguir para desarrollar los laboratorios

Pasos a seguir:

a)  Leer la base teórica del ejercicio , ayudarse del manual o de información que encuentre en intenet

b)  Ejecutar las demos planteadas

c)  Verificar que el resultado sea igual al planteadod)  Verificar que se cumplan los objetivos

Mejoras:

Para sugerencias y mejoras de los procedimientos colgar su respuesta o publicación en nuestro blog y/o

wikispace:

http://jhacs.blogspot.com 

http://jhacs.wikispaces.com 

Códigos Fuentes y Aplicaciones: estarán a su disposición en dicho blog. 

5) LABORATORIOS 

Laboratorio 01 (Lab Básico): Creando y ejecutando un procedimiento almacenado

Un procedimiento es un programa el cual es almacenado físicamente en una base de datos. Su

implementación varía de un gestor de bases de datos a otro. La ventaja de un procedimiento

almacenado es que al ser ejecutado, en respuesta a una petición de usuario, es ejecutado

directamente en el motor de bases de datos, el cual usualmente corre en un servidor separado.

Como tal, posee acceso directo a los datos que necesita manipular y sólo necesita enviar sus

resultados de regreso al usuario, deshaciéndose de la sobrecarga resultante de comunicar grandes

cantidades de datos salientes y entrantes

Trabajaremos con las tablas Clientes y Empleado

Page 10: Procedimiento Almacenado

5/10/2018 Procedimiento Almacenado - slidepdf.com

http://slidepdf.com/reader/full/procedimiento-almacenado 10/22

 

En este ejemplo usaremos la base de datos: Eurekabank

Procedemos a crear un nuevo procedimiento : Usando la tabla cliente

Al finalizar el código usamos: exec ejemplo01 el cual indicara que el procedimiento a sido realizado

correctamente… 

Page 11: Procedimiento Almacenado

5/10/2018 Procedimiento Almacenado - slidepdf.com

http://slidepdf.com/reader/full/procedimiento-almacenado 11/22

 

Lab 1.1 Ahora crearemos y ejecutaremos un nuevo Procedimiento usando parámetros: Usando

tabla Empleado

Laboratorio 02: Modificando un procedimiento almacenado ya existente

En la siguiente imagen se muestra un procedimiento almacenado sin parámetros.

Para modificar un procedimiento almacenado después haber sido creado se usa la sentencia:

 ALTER PROCEDURE [nombre del procedimiento]

BEGIN

[Consulta SQL]

END 

Page 12: Procedimiento Almacenado

5/10/2018 Procedimiento Almacenado - slidepdf.com

http://slidepdf.com/reader/full/procedimiento-almacenado 12/22

 

 

Ahora mostramos un procedimiento almacenado con parámetros lo cual vamos a enseñarles a

modificar a continuación.

Este es el procedimiento denominado datos_clientes y pasamos como parámetros @identificador

Para mostrar el cliente según su código lo cual vamos a modificar para que nos muestre todos los

cliente según el código de ciudad

La sentencia que usamos anteriormente la volvemos a usar:

ALTER PROCEDURE [nombre del procedimiento]

[@parametros]

BEGIN

[Consulta SQL]

END 

Page 13: Procedimiento Almacenado

5/10/2018 Procedimiento Almacenado - slidepdf.com

http://slidepdf.com/reader/full/procedimiento-almacenado 13/22

 

 

Laboratorio 03 (Lab Intermedio): Creando un procedimiento almacenado para insertar registros

Vamos a crear un procedimiento almacenado para insertar empleados.

  Creación del procedimiento almacenado.

  Ahora cuando queramos insertar registros en la tabla empleados simplemente ejecutamos el

procedimiento con los parámetros a registrar.

Page 14: Procedimiento Almacenado

5/10/2018 Procedimiento Almacenado - slidepdf.com

http://slidepdf.com/reader/full/procedimiento-almacenado 14/22

 

 

  Ahora verificamos el registro insertado

Laboratorio 04: Creando un procedimiento almacenado para eliminar Registro

Los procedimientos almacenados también pueden ser usados para eliminar datos desde la BD,

antes veremos la cantidad de registro que existe en la tabla empleado como por ejemplo:

Dando un visto a Todos Los registros antes de poder eliminar lo que queremos.

Page 15: Procedimiento Almacenado

5/10/2018 Procedimiento Almacenado - slidepdf.com

http://slidepdf.com/reader/full/procedimiento-almacenado 15/22

 

Podremos crear Procedimientos Almacenados de 2 maneras:

1.  PODEMOS CREAR UN PROCEDIMIENTO ALMACENADO PARA PODER USARLO CUANTOS

VECES QUERAMOS.

Ejecutamos el Procedimiento Almacenado

Damos un vistazo para saber si el registro se Elimino de la Tabla

Page 16: Procedimiento Almacenado

5/10/2018 Procedimiento Almacenado - slidepdf.com

http://slidepdf.com/reader/full/procedimiento-almacenado 16/22

 

 

2.  Podriamos haberlo creado de la siguiente manera. Esto es mas que nada para saber si se

ingresa o No un valor.

Ejecutamos el Procedimiento

Page 17: Procedimiento Almacenado

5/10/2018 Procedimiento Almacenado - slidepdf.com

http://slidepdf.com/reader/full/procedimiento-almacenado 17/22

 

 

Nos queda de esta manera:

Ahora si no por “x” motivos no ingresamos un valor pues nos mostrara un mensaje así: 

Laboratorio 05: Creando un procedimiento almacenado para consultar registros

Los procedimientos almacenados también pueden ser usados para solicitar datos

desde la BD como por ejemplo:

create procedure sucursal_deempleado@cod nvarchar (4)=null,@sucursal nvarchar(50) outputAs--- verificamos que se nos de un valor no nulo

if (@cod is null) beginprint 'debe ingresar codigo de empleado'return 1end--- verificamos que el codigo exista entre los empleados

if not exists(select 1 from Empleado as e where e.chr_emplcodigo=@cod)

Page 18: Procedimiento Almacenado

5/10/2018 Procedimiento Almacenado - slidepdf.com

http://slidepdf.com/reader/full/procedimiento-almacenado 18/22

 

beginprint 'No existe este codigo en el registro de empleados'return 2end

--- realizamos la consulta

set @sucursal= (select s.vch_sucunombre+ ','+ s.vch_sucudireccion + ' ' + s.vch_sucuciudad from Sucursal as s inner join Asignado as

a on s.chr_sucucodigo=a.chr_sucucodigo inner join Empleado as eon e.chr_emplcodigo=a.chr_emplcodigo where e.chr_emplcodigo=@cod)

return 0go-----------------Hasta aqui el procedimienteto

---Ahora lo ejecutamos

--- DECLARAMOS UNAS CUANTAS VARIABLES QUE NOS AYUDENdeclare @rtn nvarchar(4),@sucursal nvarchar(50)

--LE DAMOS EL CODIGO del empleado QUE QUEREMOS BUSCAR SU SUCURSAL ALA --VARIABLE RTNset @rtn='0001'

--AL EJECUTAR INDICAMOS (POR MEDIO DEL ORDEN ORDENADECUADO)--QUE VARIABLE VALOR DIIJIMOS A QUE PARAMETRO INCLUYENDO--LA VARIABLE QUE USAREMOS PARA MOSTRAR EL RESULTADO

--QUE VARIABLE VALOR DIIJIMOS A QUE PARAMETRO INCLUYENDO--LA VARIABLE QUE USAREMOS PARA MOSTRAR EL RESULTADO

execute sucursal_deempleado @rtn,@sucursal output

--YA SE ALMACENO EL RESULTADO A LA VARIABLE @sucursal Ahora solo lo--mostramos

select @sucursal as [Sucursal]

Laboratorio 06 (Lab Avanzado) : Programar procedimientos almacenados con parámetros y variables

Al Declarar variables es Transact SQL no hay distincion entre los nombres de las variables por

MAYUSCULAS y MINUSCULAS

Una variable es un valor identificado por un nombre (identificador) sobre el que podemos realizar

modificaciones.

En Transact SQL los identificadores de variables deben comenzar por el caracter @, es decir, el

nombre de una variable debe comenzar por @. Para declarar variables en Transact SQL debemos

utilizar la palabra clave declare, seguido del identificador y tipo de datos de la variable.

declare @nombre varchar(50)-- declare declara una variable-- @nombre es el identificador de la-- variable de tipo varchar

set @nombre = ‘Jhonatan’ -- El signo = es un operador-- Jhonatan es un literal

print @Nombre -- Imprime por pantalla el valor de @nombre.

Page 19: Procedimiento Almacenado

5/10/2018 Procedimiento Almacenado - slidepdf.com

http://slidepdf.com/reader/full/procedimiento-almacenado 19/22

 

-- No diferencia mayúsculas ni minúsculas en --elnombre de la variable

A continuacion tenemos un ejemplo de variables usadas dentro de los procedimientos almacenados

--El procedimiento nos almacena un nuevo cliente--solicitamos los datos necesarios para realizar el insert into conlos --paramatros y al final devolveremos el codigo que se agenerado en base --a un contador que llevamos desde una tablellamada contador y lo --transformaremos a char(carácter)

create procedure usp_insertarcliente@vch_cliepaterno varchar(25)=null,@vch_cliematerno varchar(25)=null,@vch_clienombre varchar(30)=null,@chr_cliedni char(8)=null,@vch_clieciudad varchar(30)=null,@vch_cliedireccion varchar(50)=null,@vch_clietelefono varchar(20)=null,@vch_clieemail varchar(50)=null,

@chr_cliecodigo char(5) outputAs

--solicitamos los datos necesarios para realizar el insert into queno --deben ser nulos

if (@vch_cliepaterno is null or@vch_cliematerno is null or@chr_cliedni is null or@vch_clieciudad is null or@vch_cliedireccion is null )begin print 'debe ingresar los parametros'

return 1end

--con el transaction nos aseguramos que si se eventua algun falloal --ejecutar las sentencias todo vuelva a como estaba antesasta el punto --de transaction

begin transaction--declaramos la variable @int_contitem para almcenar el contadorde --clientes que se lleva en la tabla contador

declare @int_contitem intupdate Contadorset @int_contItem=int_contitem,

int_contItem=@int_contitem+1where vch_conttabla='Cliente'

--si la consulta no nos devuelve resultado por algun motivoejecutamos el --rollback que nos devuelve al punto de inicio

if (@@ROWCOUNT=0)begin rollback transactionreturn 2end

commit transaction

Page 20: Procedimiento Almacenado

5/10/2018 Procedimiento Almacenado - slidepdf.com

http://slidepdf.com/reader/full/procedimiento-almacenado 20/22

 

 --ahora crearemos el codigo de cliente que sera un char(5) donde--trendremos el numero de cliente que se genera y llenaremos losespacios -- con ceros

set @chr_cliecodigo=RIGHT('00000'+CONVERT(varchar(5),@int_contitem),5)

--ahora junto a los datos que obtuvimos de los parametros y elcodigo que --generamos realizaremos el insert into la tabla cliente

begin transactioninsert into Cliente(chr_cliecodigo,vch_cliepaterno,vch_cliematerno,vch_clienombre,chr_cliedni,vch_clieciudad,vch_cliedireccion,vch_clietelefono,vch_clieemail)values(@chr_cliecodigo,@vch_cliepaterno,@vch_cliematerno,@vch_clienombre,@chr_cliedni,@vch_clieciudad,@vch_cliedireccion,@vch_clietelefono,@

vch_clieemail)

--si se nos presenta cualquier mensaje de error entonces anularemosla --operación para que no quede algun posible daño en la bd delo contrario --todo se ejecutara

if(@@error<>0)begin 

rollback transactionreturn 3

endcommit transactionreturn 0go 

Así como en el ejemplo del punto 13 nos ayudaremos de variables para ejecutar de

manera más sencilla el procedimiento y mostrar los resultados

declare @rtn int,@cod char(5)declare @nom varchar(25),@pat varchar(25),@mat varchar(25),@dnichar(8),@ciudad varchar(25),@direccion varchar(25),@telefono varchar(25),@email varchar(25)set @nom='jhon'set @pat ='par'

set @mat ='her'set @dni='21585687'set @ciudad ='ica'set @direccion ='vic'set @telefono ='21552'set @email ='85@hit'

Page 21: Procedimiento Almacenado

5/10/2018 Procedimiento Almacenado - slidepdf.com

http://slidepdf.com/reader/full/procedimiento-almacenado 21/22

 

--en la variable @rtn esta ves guardaremos el return que es unvalor --entero que nos indicara a que parte del procedimientose llego mediante --los datos insertados

execute @rtn=usp_insertarcliente @pat,@mat,@nom,@dni,@ciudad,@direccion,@telefono,@email,@cod output

select estado =CASe @rtnwhen 0 then 'proceso ok'when 1 then 'no se permite nulos'when 2 then 'no c suma cliente'when 3 then 'no c ingreso demanera correcta'

end,[codigo]=@cod 

Page 22: Procedimiento Almacenado

5/10/2018 Procedimiento Almacenado - slidepdf.com

http://slidepdf.com/reader/full/procedimiento-almacenado 22/22

 

6) CONCLUSIONES

Con los laboratorios antes realizados ,se ha podido notar la manera de encapsular sentencias SQL para

operaciones frecuentes en sistemas de información y su utilidad que ello conlleva. 

Si bien en estos laboratorios no se ha podido mostrar una comparativa con respecto a tiempos de ejecución,

pues con esta clase de consultas y la cantidad de datos los tiempos de respuestas son cortos. Se deja en

claro que si adecuamos esto al tiempo y frecuencia de uso de dichas sentencias, además del tráfico ycantidad de usuarios, usar un procedimiento almacenado resulta en un código más limpio, rapidez y eficacia

en resultados

Esto es especialmente útil cuando es imposible mediante una sentencia SQL el rescatar toda la información

que el usuario requiere, como por ejemplo en una factura del servicio telefónico que está sujeta a

promociones, tipos de cliente, tipos de llamadas, localidades, horarios pico y no pico etc, para lo cual es

necesario consultar varias tablas. La factura del recibo telefónico puede llegar a su realización mediante dos

diferentes caminos, el caso A, en el cual la aplicación cliente solicitaría al DBMS cada consulta que considere

necesaria para formar la factura o el caso B en el que en el DBMS se almacenaría la rutina para que se

ejecutarán todas las sentencias SQL necesarias y enviaría como respuesta una estructura de información en

la cual la aplicación cliente tendría todas los datos necesarios para imprimir dicha factura.

Es necesario realizar una diferencia en el uso de los procedimientos almacenados y las UDF (funciones

definidas por el usuario) ya que los dos actúan de manera muy parecida, esta diferencia consiste en que los

procedimientos almacenados aceptan una entrada múltiple y múltiples parámetros de salida, mientras que

una UDF al igual que el procedimiento acepta una entrada múltiple pero solamente un único valor de salida,

son fáciles de diferenciar ya que las UDF son compiladas en el servidor y se incrustan principalmente en

sentencias SQL similares a sum(),count() etc.. Mientras que los procedimientos no es necesario compilarlos,

y se utilizan sobretodo sentencias SQL.

Los estándares se hacen presentes en este tema, y es lógico, ya que con ellos se logra la unificación,

convencionalidad y posibilidad de utilización de diferentes bases de datos con las mismas sentencias SQ L al

menos en los procedimientos almacenados, los DBMS mas robustos como ORACLE, SQL SERVER y MYSQL se

encuentran regidos bajo el estándar SQL:2003, aunque con algunas excepciones cada uno de ellos.

7) REFERENCIAS

1.  http://www.wikilearning.com/monografia/procedimientos_almacenados_mysql_5/25854-5 

2.  http://sanchez-soft.blogspot.com/2006/11/sql-crear-un-procedimiento-almacenado.html 

3.  http://www.sqlmax.com/centro/ModuloIV_1.asp?MX=