Вы находитесь на странице: 1из 10

[15 DE ENERO]

Procedimientos almacenados y disparadores

2014
BASE DE DATOS

BADILLO RAMIREZ LETICIA

OBJETIVO Crear un procedimiento almacenado el cual este de forma permanente o no as mismo devolviendo valores numricos o enteros en el resultado. En el cual guarde, modifique, eliminar e inserta segn la operacin. MARCO TEORICO Procedimientos almacenados en Transact SQL Un procedimiento es un programa dentro de la base de datos que ejecuta una accin o conjunto de acciones especificas. Un procedimiento tiene un nombre, un conjunto de parmetros (opcional) y un bloque de cdigo. Para crear un procedimiento sentencia CREATE PROCEDURE. almacenado debemos emplear la

CREATE PROCEDURE <nombre_procedure> [@param1 <tipo>, ...] AS -- Sentencias del procedure Para modificar un procedimiento almacenado sentencia ALTER PROCEDURE. debemos emplear la

ALTER PROCEDURE <nombre_procedure> [@param1 <tipo>, ...] AS -- Sentencias del procedure

El siguiente ejemplo muestra un procedimiento almacenado, denominado spu_addCliente que inserta un registro en la tabla "CLIENTES". CREATE PROCEDURE spu_addCliente @nombre varchar(100), @apellido1 varchar(100), @apellido2 varchar(100),

@nifCif varchar(20), @fxNaciento datetime AS INSERT INTO CLIENTES (nombre, apellido1, apellido2, nifcif, fxnacimiento) VALUES (@nombre, @apellido1, @apellido2, @nifCif, @fxNaciento)

Para la ejecutar un procedimiento almacenado debemos utilizar la sentencia EXEC. Cuando la ejecucin del procedimiento almacenado es la primera instruccin del lote, podemos omitir el uso de EXEC. El siguiente ejemplo muestra la ejecucin del procedimiento almacenado anterior. DECLARE @fecha_nacimiento datetime set @fecha_nacimiento = convert(datetime, '13/05/1975', 103) EXEC spu_addCliente 'Pedro', 'Herrarte', '00000002323', @fecha_nacimiento 'Sanchez',

Siempre es deseable que las instrucciones del procedure esten dentro de un bloque TRY CATCH y controlados por una transaccin. ALTER PROCEDURE spu_addCliente @nombre varchar(100), @apellido1 varchar(100), @apellido2 varchar(100), @nifCif varchar(20), @fxNaciento datetime AS

BEGIN TRY BEGIN TRAN INSERT INTO CLIENTES (nombre, apellido1, apellido2, nifcif, fxnacimiento) VALUES (@nombre, @apellido1, @apellido2, @nifCif, @fxNaciento) COMMIT END TRY BEGIN CATCH ROLLBACK PRINT ERROR_MESSAGE() END CATCH Si queremos que los parmetros de un procedimiento almacenado sean de entrada-salida debemos especificarlo a travs de la palabra clave OUTPUT , tanto en la definicin del procedure como en la ejecucin. El siguiente ejemplo muestra la definicin de un procedure con parmetros de salida. CREATE PROCEDURE spu_ObtenerSaldoCuenta @numCuenta varchar(20), @saldo decimal(10,2) output AS BEGIN SELECT @saldo = SALDO FROM CUENTAS WHERE NUMCUENTA = @numCuenta END

Y para ejecutar este procedure: DECLARE @saldo decimal(10,2) EXEC spu_ObtenerSaldoCuenta '200700000001', @saldo output PRINT @saldo Un procedimiento almacenado puede devolver valores numericos enteros a travs de la instruccin RETURN. Normalmente debemos utilizar los valores de retorno para determinar si la ejecucin del procedimiento ha sido correcta o no. Si queremos obtener valores se recomienda utilizar parmetros de salida o funciones escalares (se vern mas adelante en este tutorial). El siguiente ejemplo muestra un procedimiento almacenado que devuelve valores. CREATE PROCEDURE spu_EstaEnNumerosRojos @numCuenta varchar(20) AS BEGIN IF (SELECT SALDO FROM CUENTAS WHERE NUMCUENTA = @numCuenta) < 0 BEGIN RETURN 1 END ELSE RETURN 0 END El siguiente ejemplo muestra como ejecutar el procedure y obtener el valor devuelto.

DECLARE @rv int EXEC @rv = spu_EstaEnNumerosRojos '200700000001' PRINT @rv Otra caracteristica muy interesante de los procedimientos almacenados en Transact SQL es que pueden devolver uno o varios conjuntos de resultados. El siguiente ejemplo muestra un procedimiento almacenado que devuelve un conjunto de resultados. CREATE PROCEDURE spu_MovimientosCuenta @numCuenta varchar(20) AS BEGIN SELECT @numCuenta, SALDO_ANTERIOR, SALDO_POSTERIOR, IMPORTE, FXMOVIMIENTO FROM MOVIMIENTOS INNER JOIN CUENTAS ON MOVIMIENTOS.IDCUENTA = CUENTAS.IDCUENTA WHERE NUMCUENTA = @numCuenta ORDER BY FXMOVIMIENTO DESC END

DESARROLLO Procedimiento almacenado que consulte la tabla de categoras

Guardar la base de datos por medio de procedimientos almacenados create procedure GuadarCop @ubicacion varchar(100) as Begin backup database Northwind TO DISK= @ubicacion

exec GuadarCop ' K:northwind.bak'

Se har una consulta en cual usaremos el operador LIKE en cual se muestra ordenados por la letra C la columna CategoryName de la tabla Categories create procedure Consulta3 @P varchar(30) as Begin Select *from Categories where CategoryName like @P end exec Consulta3 'c%'

Se hara una consulta en cual usaremos el operador LIKE en cual se muestra ordenados por la letra s al termino de la palabra en CategoryName. create procedure consulta3 @p varchar(30) as begin select * from categories where categoryname like @p end exec consulta3 '%s'

Hacer una consulta en la cual se inserte una region create procedure InsertarRegionn @Clave int, @Region nchar(50) as Begin insert Region values (@Clave,@Region) end exec InsertarRegionn 5,'Mexico centro' select*from Region

procedimiento almacenado para elimnar registros de la tabla regin create procedure EliminarRegionn @Clave int as Begin delete Region where (@Clave='5') end exec EliminarRegionn 5 select*from

Region

CONCLUSIN La practica fue de suma importancia debido a que pude comprender como son de gran ayuda los procedimientos almacenados para la base de datos ya que lo hacen ms complejo y fcil de utilizar . Los procedimientos almacenados podrn recibir parmetros de entrada. No podrn interactuar con el usuario a travs de una interfaz o pantalla

BIBLIOGRAFIA http://www.devjoker.com/contenidos/catss/238/Procedimientos-almacenadosen-Transact-SQL.aspx http:// Procedimientos-almacenados-en-Transact-SQL.aspx http://technet.microsoft.com/es-es/library/ms189799.aspx

Вам также может понравиться