Está en la página 1de 9

Curso: Administracin de Base de Datos I Sesin 06

Ing. J aime Briones V.


jaimebv@gmail.com
1
VARIABLES

Variables Locales
Una variable local de Transact-SQL es un objeto que contiene un dato individual de
un tipo especfico. Normalmente las variables se utilizan en lotes y secuencias de
comandos:
Como contadores, para contar el nmero de veces que se realiza un bucle o
controlar cuntas veces debe ejecutarse.
Para contener un dato que desea probar mediante una instruccin de control
de flujo.
Para guardar un dato que se va a devolver en un cdigo de retorno de un
procedimiento almacenado.

Declarar una variable.
La instruccin DECLARE inicializa una variable de Transact-SQL al:
Asignar un nombre. El nombre debe tener un nico @ como primer carcter.
Asignar un tipo de datos suministrado por el sistema o definido por el
usuario y una longitud. Para las variables numricas, se asignan tambin
una precisin y una escala.
Establecer el valor a NULL.
Sintaxis:
DECLARE @nombre_variable tipo_dato [, ]
El alcance de una variable es el conjunto de instrucciones de Transact-SQL desde
las que se puede hacer referencia a la variable.
El alcance de una variable se extiende desde el punto en el que se declara hasta el
final del lote o procedimiento almacenado en el que se ha declarado.

Asignar un valor en una variable.
Cuando una variable se declara por primera vez, su valor se establece a NULL. Para
asignar un valor a una variable, use la instruccin SET. Tambin se puede asignar
un valor a una variable si se hace referencia a ella en la lista de seleccin de una
instruccin SELECT.
Para asignar un valor a una variable mediante la instruccin SET, incluya el nombre
de la variable y el valor que desea asignar a la misma.
Sintaxis:
SET @nombre_variable = expresin
Tambin es posible asignar un valor a una variable con la instruccin SELECT.

Ejemplos:
En el siguiente ejemplo declaramos la variable @id de tipo entera, en la primera
consulta obtenemos el cdigo de la categora Beverages y en la segunda
Curso: Administracin de Base de Datos I Sesin 06

Ing. J aime Briones V.
jaimebv@gmail.com
2
consulta usamos la variable @id para obtener todos los productos de la
categora Beverages.
USE Nor t hwi nd
DECLARE @I d i nt

SELECT @I d = Cat egor yI D
FROM Cat egor i es
WHERE Cat egor yName = ' Bever ages'

SELECT Pr oduct I D, Pr oduct Name, Cat egor yI D FROM Pr oduct s
WHERE Cat egor yI D = @I d

El siguiente es el conjunto de resultados:

Pr oduct I D Pr oduct Name Cat egor yI D
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1 Chai 1
2 Chang 1
24 Guar an Fant st i ca 1
34 Sasquat ch Al e 1
35 St eel eye St out 1
38 Ct e de Bl aye 1
39 Char t r euse ver t e 1
43 I poh Cof f ee 1
67 Laughi ng Lumber j ack Lager 1
70 Out back Lager 1
75 Rhnbr u Kl ost er bi er 1
76 Lakkal i kr i 1

( 12 r ow( s) af f ect ed)

Este ejemplo utiliza una variable local denominada @find para recuperar
informacin de todos los autores cuyos apellidos comienzan con Ring.
USE pubs
DECLARE @f i nd var char ( 30)
SET @f i nd = ' Ri ng%'
SELECT au_l name, au_f name, phone
FROM aut hor s
WHERE au_l name LI KE @f i nd

El siguiente es el conjunto de resultados:

au_l name au_f name phone
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Ri nger Anne 801 826- 0752
Ri nger Al ber t 801 826- 0752

( 2 r ow( s) af f ect ed)

Este ejemplo recupera nombres de empleados de los empleados de Binnet &
Hardley (pub_id = 0877) contratados el 1 de enero de 1993 o posteriormente.
USE pubs
DECLARE @pub_i d char ( 4) , @hi r e_dat e dat et i me
SET @pub_i d = ' 0877'
SET @hi r e_dat e = ' 1/ 01/ 93'
SELECT f name, l name
FROM empl oyee
WHERE pub_i d = @pub_i d and hi r e_dat e >= @hi r e_dat e
Curso: Administracin de Base de Datos I Sesin 06

Ing. J aime Briones V.
jaimebv@gmail.com
3
El siguiente es el conjunto de resultados:

f name l name
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Anabel a Domi ngues
Paul Henr i ot

( 2 r ow( s) af f ect ed)


Variables Globales
Las variables globales son predefinidas y mantenidas por SQL Server. Los usuarios
no pueden asignar o cambiar directamente el valor de una variable global. Muchas
de las variables globales reportan la actividad que el sistema ha tenido desde la
ltima vez que se inici; otras reportan informacin sobre la conexin. Las variables
globales estn precedidas por dos smbolos @.
Las variables globales son tiles para verificar cierta informacin o condicin del
entorno actual de SQL Server. Por ejemplo:
Ejemplos:
Utilizar la variable @@versin para consultar la versin actual de SQL Server.
sel ect @@ver si on
El siguiente es el conjunto de resultados:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Mi cr osof t SQL Ser ver 2008 ( RTM) - 10. 0. 1600. 22 ( X64) J ul 9 2008
14: 17: 44 Copyr i ght ( c) 1988- 2008 Mi cr osof t Cor por at i on Ent er pr i se
Edi t i on ( 64- bi t ) on Wi ndows NT 6. 1 <X64> ( Bui l d 7601: Ser vi ce Pack 1)

( 1 r ow( s) af f ect ed)

El siguiente ejemplo trata de actualizar el precio de un producto que no existe y
luego se verifica si la instruccin se ejecut satisfactoriamente comprobando el
valor de la variable global @@RowCount.
USE Nor t hwi nd
UPDATE Pr oduct s
SET Uni t Pr i ce = Uni t Pr i ce + 1. 0
WHERE Pr oduct I D = 90
I F ( @@RowCount = 0)
BEGI N
PRI NT ' Ni nguna Fi l a f ue act ual i zada'
RETURN
END
El siguiente es el conjunto de resultados:
( 0 r ow( s) af f ect ed)

Ni nguna Fi l a f ue act ual i zada
Curso: Administracin de Base de Datos I Sesin 06

Ing. J aime Briones V.
jaimebv@gmail.com
4
CONTROL DE FLUJO
Transact SQL proporciona un conjunto de palabras que forman parte del llamado
Lenguaj e de Control de Fluj o, con el cual podemos controlar la secuencia y el
nmero de veces que se debe ejecutar una o un grupo de instrucciones.
BEGINEND
BEGIN y END se usan para agrupar varias instrucciones de Transact-SQL en un
bloque lgico. Use BEGIN y END en cualquier parte donde una instruccin de
control de flujo deba ejecutar un bloque con dos o ms instrucciones de Transact-
SQL.
BEGIN y END se usan cuando:
Es necesario que un bucle WHILE incluya un bloque de instrucciones.
Es necesario que un elemento de una funcin CASE incluya un bloque de
instrucciones.
Es necesario que una clusula IF o ELSE incluya un bloque de instrucciones.
Sintaxis:
BEGI N
. . .
. . .
END

IF
IF permite verificar una condicin, y si su resultado es verdadero ejecuta una
instruccin o un bloque de instrucciones.
Sintaxis:
Ejecuta una instruccin si la condicin es verdadera.
I F Condi ci n
I nst r ucci n
Ejecuta un bloque de instrucciones si la condicin es verdadera.
I F Condi ci n
BEGI N
I nst r ucci n
I nst r ucci n
. . .
END
Donde:
Condicin, representa la expresin lgica que debe ser evaluada y su valor es True
False.
Instruccin, representa la operacin que debe ser ejecutada.


Curso: Administracin de Base de Datos I Sesin 06

Ing. J aime Briones V.
jaimebv@gmail.com
5
IF. . . ELSE
La clusula ELSE en la instruccin IF permite definir una instruccin o un bloque de
instrucciones, que ser ejecutada cuando la condicin da como resultado False.
Sintaxis:
I F Condi ci n
I nst r ucci n
ELSE
I nst r ucci n

CASE
La funcin CASE es una expresin especial de Transact-SQL que permite que se
muestre un valor alternativo dependiendo del valor de una columna. Este cambio es
temporal, con lo que no hay cambios permanentes en los datos.
La funcin CASE acepta dos formatos que describiremos a continuacin.
Formato 1
Sintaxis:
CASE Expr esi nEnt r ada
WHEN Expr esi nCuando THEN Expr esi nResul t ado [ , n]
[ ELSE Expr esi nResul t adoEl se]
END
Donde:
- ExpresinEntrada, es la expresin que evala la funcin CASE.
- ExpresinCuando, es la expresin con la que es comparada la
ExpresinEntrada, sin son iguales retorna la ExpresinResultado
correspondiente.
- ExpresinResultado, es la expresin que retorna la funcin CASE cuando la
ExpresinCuando es igual a ExpresinEntrada.
- ExpresinResultadoElse, es la expresin que retorna cuando la
ExpresinEntrada no es igual con ninguna ExpresinCuando.
Ejemplo:
El siguiente ejemplo muestra el primer da de la semana que se ha establecido con
SET DATEFIRST: 1 para lunes, 2 para martes y as hasta 7 para el domingo.
SELECT CASE @@DATEFI RST
WHEN 1 THEN ' Lunes'
WHEN 2 THEN ' Mar t es'
WHEN 3 THEN ' Mi r col es'
WHEN 4 THEN ' J ueves'
WHEN 5 THEN ' Vi er nes'
WHEN 6 THEN ' Sbado'
WHEN 7 THEN ' Domi ngo'
ELSE ' NONE'
END AS ' 1er d a de l a Semana'
Curso: Administracin de Base de Datos I Sesin 06

Ing. J aime Briones V.
jaimebv@gmail.com
6
El siguiente es el conjunto de resultados:
1er d a de l a Semana
- - - - - - - - - - - - - - - - - - - -
Domi ngo

( 1 r ow( s) af f ect ed)

Formato 2
Sintaxis:
CASE Expr esi nBool eana THEN Expr esi nResul t ado [ , n]
[ ELSE Expr esi nResul t adoEl se]
END
Donde:
- ExpresinBooleana, es la expresin que evala la funcin CASE, si es
verdadera retorna la ExpresinResultado correspondiente.
- ExpresinResultado, es la expresin que retorna la funcin CASE cuando la
ExpresinBooleana es verdadera.
- ExpresinResultadoElse, es la expresin que retorna la funcin CASE cuando
ninguna ExpresinBoolena es verdadera.
Ejemplo:
El siguiente ejemplo muestra un comentario acerca de los precios de los productos.
USE Nor t hwi nd
SELECT Pr oduct Name, Uni t Pr i ce,
CASE
WHEN Uni t Pr i ce < 0 THEN ' Pr eci o Er r ado'
WHEN Uni t Pr i ce < 8 THEN ' Se puede compr ar '
WHEN Uni t Pr i ce < 14 THEN ' Un poco car o'
ELSE ' Bi en Car o'
END AS ' Pr eci o'
FROM Pr oduct s
El siguiente es el conjunto de resultados:
Pr oduct Name Uni t Pr i ce Pr eci o
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Chai 18. 0000 Bi en Car o
Chang 19. 0000 Bi en Car o
Ani seed Syr up 10. 0000 Un poco car o
Chef Ant on' s Caj un Seasoni ng 22. 0000 Bi en Car o
Chef Ant on' s Gumbo Mi x 21. 3500 Bi en Car o
Gr andma' s Boysenber r y Spr ead 25. 0000 Bi en Car o
Uncl e Bob' s Or gani c Dr i ed Pear s 30. 0000 Bi en Car o
Nor t hwoods Cr anber r y Sauce 40. 0000 Bi en Car o
Mi shi Kobe Ni ku 97. 0000 Bi en Car o
Konbu 6. 0000 Se puede compr ar
.
.
.
Or i gi nal Fr ankf ur t er gr ne Soe 13. 0000 Un poco car o
( 77 r ow( s) af f ect ed)
Curso: Administracin de Base de Datos I Sesin 06

Ing. J aime Briones V.
jaimebv@gmail.com
7
WHILE
Establece una condicin para la ejecucin repetida de una instruccin o bloque de
instrucciones de SQL. Las instrucciones se ejecutan repetidamente mientras la
condicin especificada sea verdadera. Se puede controlar la ejecucin de
instrucciones en el bucle WHILE con las palabras clave BREAK y CONTINUE.
Sintaxis:
WHI LE Expr esi nBool eana
{I nst r ucci nSQL | Bl oqueI nst r ucci ones}
[ BREAK]
{I nst r ucci nSQL | Bl oqueI nst r ucci ones}
[ CONTI NUE]
END
Donde:
- ExpresinBooleana, es una expresin que devuelve TRUE (verdadero) o
FALSE (falso). Si ExpresinBooleana contiene una instruccin SELECT, esta debe
ir entre parntesis.
{I nst r ucci nSQL | Bl oqueI nst r ucci ones}
Se trata de cualquier instruccin o grupo de instrucciones de Transact-SQL
definidos con un bloque de instrucciones.
- BREAK, hace que se salga del bloque WHILE ms interno. Se ejecutan las
instrucciones que aparecen despus de la palabra clave END, que marca el final
del bucle.
- CONTINUE, hace que se reinicie el bucle WHILE y se omitan las instrucciones
que haya despus de la palabra clave CONTINUE.

Ejemplo:
El siguiente ejemplo muestra los nmeros de 1 al 10.
DECLARE @Cont i nt
SET @Cont = 1
WHI LE ( @Cont <=10)
BEGI N
Pr i nt @Cont
SET @Cont = @Cont + 1
END
El siguiente es el conjunto de resultados:
1
2
3
4
5
6
7
8
9
10

Curso: Administracin de Base de Datos I Sesin 06

Ing. J aime Briones V.
jaimebv@gmail.com
8
El siguiente ejemplo imprime los nmeros del 1 al 15, pero no incluye el 5.
DECLARE @Cont i nt
SET @Cont = 0
WHI LE EXI STS( SELECT *)
BEGI N
SET @Cont = @Cont + 1
I F ( @Cont = 5)
CONTI NUE
Pr i nt @Cont
I F ( @Cont = 15)
BREAK
END
El siguiente es el conjunto de resultados:
1
2
3
4
6
7
8
9
10
11
12
13
14
15

RETURN
La instruccin RETURN termina incondicionalmente una consulta, procedimiento
almacenado o lote. Ninguna de las instrucciones de un procedimiento almacenado o
lote que siga a la instruccin RETURN se ejecutar.
Sintaxis:
RETURN [ Expr esi nEnt er a]
Donde:
- ExpresinEntera, es el valor entero que se devuelve. Los procedimientos
almacenados pueden devolver un valor entero al procedimiento que realiza la
llamada o a una aplicacin.
Ejemplo:
El siguiente ejemplo por la condicin del bucle debera imprimir los nmeros del
1 al 15, pero el IF interno solo permite imprimir los nmeros del 1 al 4.
DECLARE @Cont i nt
SET @Cont = 0
WHI LE ( @Cont < 15)
BEGI N
SET @Cont = @Cont + 1
I F ( @Cont = 5)
RETURN
Pr i nt @Cont
Curso: Administracin de Base de Datos I Sesin 06

Ing. J aime Briones V.
jaimebv@gmail.com
9
END
El siguiente es el conjunto de resultados:
1
2
3
4

También podría gustarte