SCRIPT EN TRANSACT-SQL DE SQL SERVER
VARIABLES EN T-SQL T -SQL Definición
Son valores que se identifican con un Nombre, denominados Identificadores; sobre los que se pueden realizar modificaciones. Sintaxis
DECLARE {@VariableLocal tipoDatos}[, …n] SET @NombreVariableLocal = Expresión Ejemplo: DECLARE @Nombre varchar(50) SET @Nombre = ‘www.microsoft.com/sql’ PRINT @Nombre Asignación de Variables utilizando SET
Use NorthWind Go DECLARE @Apellidos varchar(50) SET @Apellidos = (select LastName From Employees Where EmployeeID= 4) PRINT @Apellidos Go
Resultado:
Asignación de Variables utilizando SELECT
Use NorthWind Go DECLARE @Nombre varchar varchar((50), 50), @Apellidos varchar varchar((50) 50) SELECT @Nombre= @Nombre=FirstName, FirstName , @Apellidos= @Apellidos=LastName From Employees Where EmployeeID= EmployeeID =4 PRINT 'Nombre: ' + @Nombre PRINT 'Apellido: ' + @Apellidos Go
MG. Luis Boy Chavil
Página 1
SCRIPT EN TRANSACT-SQL DE SQL SERVER
Asignación de Variables utilizando CURSORES
Use NorthWind Go DECLARE @Nombre varchar varchar((50), 50), @Apellidos varchar varchar((50) 50) DECLARE CDATOS CURSOR for Select FirstName, FirstName, LastName From Employees OPEN CDATOS FETCH CDATOS INTO @Nombre, @Nombre, @Apellidos While ( @@FETCH_STATUS @@FETCH_STATUS = 0) Begin Print 'Nombre: ' + @Nombre Print 'Apellidos: ' + @Apellidos Print ' ' FETCH CDATOS INTO @Nombre, @Nombre, @Apellidos End CLOSE CDATOS DEALLOCATE CDATOS Go OPERADORES T-SQL
TIPO Aritmético Relacionales Lógicos Concatenación ALL ANY BETWEEN
OPERADOR +, -, *, /, **, % =, <>, !=, <, >, <=, >=, !<, !> and, not, or, &, |, ^ (and, or y xor a nivel de bit) + Devuelve TRUE si el conjunto de comparaciones es TRUE Devuelve TRUE si cualquier elemento del conjunto de comparaciones es TRUE
LIKE NOT
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 Invierte el valor de cualquier operando booleano
SOME
Devuelve TRUE si alguna de las comparaciones comparaciones de un conjunto es TRUE
MG. Luis Boy Chavil
Página 2
SCRIPT EN TRANSACT-SQL DE SQL SERVER
ESTRUCTURAS DE CONTROL 1. Estructura Condicional IF IF () Begin ……. Bloque de Sentencias ……. End ELSE IF() 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 varchar((50) 50) Null) Go Insert Into Paises Values((1, 'Perú' Values 'Perú')) Insert Into Paises Values((2, 'Brasil' Values 'Brasil')) Insert Into Paises Values((3, 'Uruguay' Values 'Uruguay')) Go -- Si Código de País existe; Se actualizará el Nombre; de lo contrario se Agregará el nuevo País DECLARE @CodPais int int,, @Nombre varchar varchar((50) 50) SET @CodPais = 4 SET @Nombre = 'Bolivia' IF EXISTS( EXISTS(select select * from Paises where PAI_codigo = @CodPais) @CodPais ) Begin UPDATE Paises SET PAI_codigo = @Nombre Where PAI_codigo = @CodPais End MG. Luis Boy Chavil
Página 3
SCRIPT EN TRANSACT-SQL DE SQL SERVER
ELSE Begin Insert Into Paises Values(( @CodPais, Values @CodPais, @Nombre) @Nombre) End Go select * from Paises 2. Estructura Condicional CASE CASE WHEN THEN WHEN THEN ELSE END Ejemplo:
Use Northwind Go select ProductID, ProductID , Categoría = CASE CategoryID WHEN 1 then 'Bebidas' WHEN 2 then 'Condimentos' WHEN 3 then 'Confecciones' WHEN 4 then 'Productos Láteos' WHEN 5 then 'Granos y Cereales' WHEN 6 then 'Carne y Aves' WHEN 7 then 'Producir' WHEN 8 then 'Mariscos' ELSE 'No Encontrado' END,, END ProductName as Productos from Products order by ProductID Go 3. Estructura de control WHILE WHILE {Bloque de sentencias} [BREAK] {Bloque de sentencias} [CONTINUE] {Bloque de sentencias} NOTA: Los bloques de sentencias van entre Begin y End BREAK: Produce la salida del bucle WHILE más interno CONTINUE: Reinicia el bucle WHILE y omite las demás instrucciones despues de CONTINUE.
MG. Luis Boy Chavil
Página 4
SCRIPT EN TRANSACT-SQL DE SQL SERVER
Ejemplo:
-- 1. Mostrar los Números Números Impares entre entre 1 y 10 DECLARE @Numero int SET @Numero = 1 WHILE ( @Numero @Numero <= 10) 10) BEGIN IF ( @Numero @Numero % 2 <> 0) PRINT 'Número Impar generado: ' + cast cast(( @Numero @Numero AS Varchar Varchar)) SET @Numero = @Numero + 1 END Go -- 2. Aumentar 2.5 2.5 a los precios precios de los Productos, Productos, siempre siempre y cuando el promedio promedio -- de esos precios sea menor a 30 Use Northwind Go WHILE (Select AVG AVG((UnitPrice) UnitPrice) from Products) 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 evalúa si se producen errores en cuyo caso el control se transfiere a otro conjunto de sentencias dentro de un bloque CATCH. BEGIN TRY END TRY BEGIN CATCH
END CATCH
Ejemplo: -- 1. Mostrar un mensaje cuando se detecte un Error BEGIN TRY DECLARE @Numerador int int,, @Denominador int int,, @Resultado int SET @Numerador = 25 SET @Denominador = 0 -- Este valor se coloca para observar el error SET @Resultado = @Numerador / @Denominador PRINT 'Resultado : ' + cast cast(( @Resultado @Resultado AS Varchar Varchar)) END TRY
MG. Luis Boy Chavil
Página 5
SCRIPT EN TRANSACT-SQL DE SQL SERVER
BEGIN CATCH IF @@ERROR IF @@ERROR = 0 PRINT 'No hay Error ....' ELSE PRINT 'Error .... División por 0' END CATCH
MG. Luis Boy Chavil
Página 6