Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Contenido
1. Crear Store Procedures en MS SQL Server .................................................................................. 1
2. Crear Triggers en MS SQL Server................................................................................................. 5
3. Crear Vistas en MS SQL Server .................................................................................................... 9
AS
AS
AS
Para 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.
Siempre es deseable que las instrucciones del procedure estn dentro de un bloque TRY CATCH y
controlados por una transaccin.
AS
BEGIN TRY
BEGIN TRAN
COMMIT
END TRY
Universidad Veracruzana Taller de Integracin III
Facultad de Estadstica e Informtica
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.
AS
BEGIN
FROM CUENTAS
END
PRINT @saldo
BEGIN
Universidad Veracruzana Taller de Integracin III
Facultad de Estadstica e Informtica
BEGIN
RETURN 1
END
ELSE
RETURN 0
END
PRINT @rv
Otra caracterstica interesante de los procedimientos almacenados es que pueden devolver uno o
varios conjuntos de resultados.
El siguiente ejemplo muestra un procedimiento almacenado que devuelve un conjunto de resultados.
BEGIN
FROM MOVIMIENTOS
END
El resultado de la ejecucin:
Trigger DML.
Los trigger DML se ejecutan cuando un usuario intenta modificar datos mediante un evento de
lenguaje de manipulacin de datos (DML). Los eventos DML son instrucciones INSERT, UPDATE o
DELETE de una tabla o vista.
La sintaxis general de un trigger es la siguiente:
BEGIN
END
ON CUENTAS
AFTER UPDATE
AS
BEGIN
END
UPDATE CUENTAS
WHERE IDCUENTA = 1
Universidad Veracruzana Taller de Integracin III
Facultad de Estadstica e Informtica
Una consideracin a tener en cuenta es que el trigger se ejecutar aunque la instruccin DML
(UPDATE, INSERT o DELETE) no haya afectado a ninguna fila. En este
caso inserted y deleted devolvern un conjunto de datos vaco.
Podemos especificar a qu columnas de la tabla debe afectar el trigger.
ON CUENTAS
AFTER UPDATE
AS
BEGIN
BEGIN
INSERT INTO HCO_SALDOS(IDCUENTA, SALDO, FXSALDO) SELECT IDCUENTA, SALDO, getdate() FROM
INSERTED
END
END
Los trigger estn dentro de la transaccin original (Insert, Delete o Update) por lo cual si dentro de
nuestro trigger hacemos un RollBack Tran, no solo estaremos echando atrs nuestro trigger sino
tambin toda la transaccin; en otras palabras si en un trigger ponemos un RollBack Tran, la
transaccin de Insert, Delete o Update volver toda hacia atrs.
ON CUENTAS
AFTER UPDATE AS
BEGIN
Universidad Veracruzana Taller de Integracin III
Facultad de Estadstica e Informtica
INSERT INTO HCO_SALDOS (IDCUENTA, SALDO, FXSALDO) SELECT IDCUENTA, SALDO, getdate() FROM
INSERTED
ROLLBACK
END
GO
GO
GO
Trigger DDL
Los trigger DDL se ejecutan en respuesta a una variedad de eventos de lenguaje de definicin de
datos (DDL). Estos eventos corresponden principalmente a instrucciones CREATE, ALTER y DROP de
Transact-SQL, y a determinados procedimientos almacenados del sistema que ejecutan operaciones
de tipo DDL.
La sintaxis general de un trigger es la siguiente:
ON DATABASE
BEGIN
...
END
La siguiente instruccin impide que se ejecuten sentencias DROP TABLE y ALTER TABLE en la base de
datos.
BEGIN
ROLLBACK TRANSACTION
END
Nota: No siempre podremos actualizar los datos de una vista, depender de la complejidad de la
misma (depender de si el conjunto de resultados tiene acceso a la clave principal de la tabla o no), y
del gestor de base de datos. No todos los gestores de bases de datos permiten actualizar vistas,
ORACLE, por ejemplo, no lo permite, mientras que SQL Server s.
Para crear una vista debemos utilizar la sentencia CREATE VIEW, debiendo proporcionar un nombre a
la vista y una sentencia SQL SELECT vlida.
Ejemplo: Crear una vista sobre nuestra tabla alquileres, en la que se nos muestre el nombre y
apellidos del cliente en lugar de su cdigo.
Si queremos, modificar la definicin de nuestra vista podemos utilizar la sentencia ALTER VIEW, de
forma muy parecida a como lo hacamos con las tablas. En este caso queremos aadir los
campos fx_alquiler y fx_devolucion a la vista.
Por ltimo podemos eliminar la vista a travs de la sentencia DROP VIEW. Para eliminar la vista que
hemos creado anteriormente se utilizara: