Sie sind auf Seite 1von 6

SCRIPT EN TRANSACT-SQL DE SQL SERVER

VARIABLES EN T-SQL
Definicin
Son valores que se identifican con un Nombre, denominados Identificadores;
sobre los que se pueden realizar modificaciones.
Sintaxis
DECLARE {@VariableLocal tipoDatos}[, n]
SET @NombreVariableLocal = Expresin
Ejemplo:
DECLARE @Nombre varchar(50)
SET @Nombre = www.microsoft.com/sql
PRINT @Nombre
Asignacin de Variables utilizando SET
Use NorthWind
Resultado:
Go
DECLARE @Apellidos varchar(50)
SET @Apellidos = (select LastName
From Employees
Where EmployeeID= 4)
PRINT @Apellidos
Go
Asignacin de Variables utilizando SELECT
Use NorthWind
Go
DECLARE @Nombre varchar(50),
@Apellidos varchar(50)
SELECT @Nombre=FirstName,
@Apellidos=LastName
From Employees
Where EmployeeID=4
PRINT 'Nombre: ' + @Nombre
PRINT 'Apellido: ' + @Apellidos
Go

Asignacin de Variables utilizando CURSORES

Use NorthWind
Pgina 1

SCRIPT EN TRANSACT-SQL DE SQL SERVER

Go
DECLARE @Nombre varchar(50),
@Apellidos varchar(50)
DECLARE CDATOS CURSOR
for
Select FirstName, LastName
From Employees
OPEN CDATOS
FETCH CDATOS INTO @Nombre, @Apellidos
While (@@FETCH_STATUS = 0)
Begin
Print 'Nombre: ' + @Nombre
Print 'Apellidos: ' + @Apellidos
Print ' '
FETCH CDATOS INTO @Nombre,
@Apellidos
End
CLOSE CDATOS
DEALLOCATE CDATOS
Go
OPERADORES T-SQL
TIPO
Aritmtico

OPERADOR
+, -, *, /, **, %

Relacionales

=, <>, !=, <, >, <=, >=, !<, !>

Lgicos
Concatenaci
n
ALL

and, not, or, &, |, ^ (and, or y xor a nivel de bit)


+

ANY

Devuelve TRUE si cualquier elemento del conjunto de


comparaciones es TRUE

BETWEEN

Devuelve TRUE si el operando est dentro del


intervalo
EXISTS es TRUE si una sub consulta contiene filas
IN es TRUE si el operando est en la lista
Es TRUE si el operando coincide con un patron

LIKE
NOT
SOME

Devuelve TRUE si el conjunto de comparaciones es


TRUE

Invierte el valor de cualquier operando booleano


Devuelve TRUE si alguna de las comparaciones de un
conjunto es TRUE

ESTRUCTURAS DE CONTROL
Pgina 2

SCRIPT EN TRANSACT-SQL DE SQL SERVER

1. Estructura Condicional IF
IF (<Expresin Booleana>)
Begin
.
Bloque de
Sentencias
.
End
ELSE IF(<Expresin Booleana>)
Begin
.
Bloque de
Sentencias
.
End
ELSE
Begin
.
Bloque de
Sentencias
.
End
Ejemplo
Use NorthWind
Go
create table Paises
(PAI_codigo int not null,
PAI_nombre varchar(50) Null)
Go
Insert Into Paises
Values(1, 'Per')
Insert Into Paises
Values(2, 'Brasil')
Insert Into Paises
Values(3, 'Uruguay')
Go
-- Si Cdigo de Pas existe; Se actualizar el Nombre; de lo contrario se
Agregar el nuevo Pas
DECLARE @CodPais int,
@Nombre varchar(50)
SET @CodPais = 4
SET @Nombre =
'Bolivia' IF
EXISTS(select *
from Paises
where PAI_codigo = @CodPais)
Begin
UPDATE Paises
SET PAI_codigo = @Nombre

Pgina 3

SCRIPT EN TRANSACT-SQL DE SQL SERVER

Where PAI_codigo = @CodPais


End
ELSE
Begin
Insert Into Paises
Values(@CodPais, @Nombre)
End
Go
select * from Paises
2. Estructura Condicional CASE
CASE <Expresin>
WHEN <Valor Expresin> THEN <Valor devuelto>
WHEN <Valor Expresin> THEN <Valor devuelto>
ELSE <Valor devuelto por defecto>
END
Ejemplo:
Use Northwind Go
select ProductID, Categora =
CASE CategoryID
WHEN 1 then 'Bebidas'
WHEN 2 then 'Condimentos'
WHEN 3 then 'Confecciones'
WHEN 4 then 'Productos
Lteos'
WHEN 5 then 'Granos y
Cereales'
WHEN 6 then 'Carne y Aves'
WHEN 7 then 'Producir'
WHEN 8 then 'Mariscos'
ELSE 'No Encontrado'
END,
ProductName as Productos
from Products
order by
ProductID
Go
3. Estructura de control WHILE
WHILE <Expresin Booleana>
{Bloque de sentencias}
[BREAK]
{Bloque de sentencias}

Pgina 4

SCRIPT EN TRANSACT-SQL DE SQL SERVER

[CONTINUE]
{Bloque de sentencias}
NOTA: Los bloques de sentencias van entre Begin y End
BREAK: Produce la salida del bucle WHILE ms interno
CONTINUE: Reinicia el bucle WHILE y omite las dems instrucciones
despues de CONTINUE.
Ejemplo:

-- 1. Mostrar los Nmeros Impares entre 1 y


10
DECLARE @Numero int
SET @Numero = 1 WHILE (@Numero <= 10)
BEGIN
IF (@Numero % 2 <> 0)
PRINT 'Nmero Impar generado: ' + cast(@Numero AS Varchar)
SET @Numero = @Numero + 1
END
Go
-- 2. Aumentar 2.5 a los precios de los Productos, siempre y cuando el
promedio
-- de esos precios sea menor a 30
Use Northwind
Go
WHILE (Select AVG(UnitPrice) from Products) < 30
BEGIN
UPDATE Products
SET UnitPrice = UnitPrice + 2.5
END
Select UnitPrice from Products
4.

Control de Errores en T-SQL con TRY CATCH

Para el conjunto de sentencias del bloque TRY; se evala si se


producen errores en cuyo caso el control se transfiere a otro conjunto de
sentencias dentro de un bloque CATCH.
BEGIN TRY
<Sentencias de T-SQL>
END TRY
BEGIN CATCH
<Sentencias de T-SQL>

END CATCH

Pgina 5

SCRIPT EN TRANSACT-SQL DE SQL SERVER

Ejemplo:
-- 1. Mostrar un mensaje cuando se detecte un Error
BEGIN TRY
DECLARE @Numerador int,
@Denominador int,
@Resultado int
SET @Numerador = 25
SET @Denominador = 0 -- Este valor se coloca para observar el error
SET @Resultado = @Numerador / @Denominador
PRINT 'Resultado : ' + cast(@Resultado AS Varchar)
END TRY

BEGIN CATCH
IF @@ERROR = 0
PRINT 'No hay Error ....'
ELSE
PRINT 'Error .... Divisin por 0'
END CATCH

Pgina 6

Das könnte Ihnen auch gefallen