Академический Документы
Профессиональный Документы
Культура Документы
1. Transact SQL
Con T-SQL vamos a poder programar las unidades de programa de la base de datos
SQL Server, estas son:
Procedimientos almacenados.
Funciones.
Triggers.
Scripts.
Operadores en T-SQL
La siguiente tabla ilustra los operadores que pueden ser empleados en este
lenguaje:
Estructura condicional IF
IF (<expresion>)
BEGIN
...
END
ELSE IF (<expresion>)
BEGIN
...
END
ELSE
BEGIN
...
END
Ejemplo de la estructura condicional IF.
IF @diminutivo = 'ABC'
BEGIN
PRINT 'Primeras letras del alfabeto'
END
ELSE
BEGIN
PRINT 'Algún otro origen de información'
END
CASE <expresión>
WHEN <valor_expresion> THEN <valor_devuelto>
WHEN <valor_expresion> THEN <valor_devuelto>
ELSE <valor_devuelto> -- Valor por defecto
END
Ejemplo de CASE.
CASE
WHEN <expresión> = <valor_expresion> THEN <valor_devuelto>
WHEN <expresión> = <valor_expresion> THEN <valor_devuelto>
ELSE <valor_devuelto> -- Valor por defecto
END
El mismo ejemplo aplicando esta sintaxis:
Bucle WHILE
WHILE <expresion>
BEGIN
...
END
Estructura GOTO
La sentencia goto nos permite desviar el flujo de ejecución hacia una etiqueta.
Fue muy utilizada en versiones anteriores de SQL Server conjuntamente con la
variable de sistema @@ERROR para el control de errores.
IF @@ERROR > 0
GOTO error
Trigger DML.
Los trigger DML se ejecutan cuando un usuario intenta modificar datos mediante
un evento de lenguaje de manipulación de datos (DML). Los eventos DML son
instrucciones INSERT, UPDATE o DELETE de una tabla o vista.
AS
BEGIN
END
ON CUENTAS
AFTER UPDATE
AS
BEGIN
FROM INSERTED
END
UPDATE CUENTAS
SET SALDO = SALDO + 10
WHERE IDCUENTA = 1
ON CUENTAS
AFTER UPDATE
AS
BEGIN
BEGIN
FROM INSERTED
END
END
Los trigger están dentro de la transacción original (Insert, Delete o Update) por lo
cual si dentro de nuestro trigger hacemos un RollBack Tran, no solo estaremos
echando atrás nuestro trigger sino también toda la transacción; en otras palabras si
en un trigger ponemos un RollBack Tran, la transacción de Insert, Delete o Update
volverá toda hacia atrás.
ON CUENTAS
AFTER UPDATE
AS
BEGIN
-- SET NOCOUNT ON impide que se generen mensajes de texto
FROM INSERTED
ROLLBACK
END
GO
GO
GO
Trigger DDL
ON DATABASE
AS
BEGIN
...
END
AS
BEGIN
ROLLBACK TRANSACTION
END