You are on page 1of 19

Laboratorio

Estructuras de Control
T-SQL

CONTENIDO
Estructura IF
Estructura Case
Estructura While

Estructura IF
La palabra clave IF se utiliza para definir una
condicin que determina si se ejecutar la
instruccin siguiente. La instruccin SQL se
ejecuta si la condicin se cumple, es decir, si
devuelve TRUE (verdadero).
La palabra clave ELSE introduce una instruccin
SQL alternativa que se ejecuta cuando la condicin
IF devuelva FALSE.

Estructura IF
SINTAXIS
IF (<expresion>)
BEGIN
...
END
ELSE IF (<expresion>)
BEGIN
...
END
ELSE
BEGIN
...
END

Estructura IF
Ejemplo 1
--Ejemplo1
IF 1 = 1
PRINT 'La Expresin Boleana es Verdadera'
ELSE
PRINT 'La Expresin Boleana es Falsa' ;

Estructura IF
Ejemplo 2
--Ejem plo2
D ECLARE @ N um ero int;
SET @ N um ero = 5;
IF @ N um ero > 100
PRIN T 'ElN m ero es M ayor que U m bralM xim o Perm itido de 100.';
ELSE
BEG IN
IF @ N um ero < 10
PRIN T 'ElN m ero est por debajo delU m bralM nim o de 10.';
ELSE
PRIN T 'ElN m ero est en elRango delU m bralM nim o y M xim o';
EN D ;
GO

Estructura IF
Ejemplo 3
--Ejem plo3
D eclare
@ N om bre varchar(20),
@ Apellido varchar(20)
SET @ N om bre= 'Cristian'
SET @ Apellido = 'Pinzn'
IF (@ N om bre < > ''and @ Apellido < > '')
BEG IN
PRIN T 'N uevo Registrado Validado para insertar'
EN D
ELSE
BEG IN
PRIN T 'Se requiere por lo m enos elnom bre y
Estudiante'
EN D
GO

apellido del

Estructura IF
Ejemplo 4
DECLARE
@Id Int,
@Nombre varchar(20),
@Apellido varchar(20),
@Direccion varchar (20),
@Telefono varchar(10),
@Movil varchar(10),
@Correo varchar(50),
@Carrera int
SET @Id=9090
SET @Nombre='Juan'
SET @Apellido='Altamira'
SET @Direccion='Betania, Panam'
SET @Telefono='230-9090'
SET @Movil='6789-0356'
SET @Correo='jaltamira@utp.ac.pa'
SET @Carrera=1007
IF EXISTS(SELECT * FROM TB_ESTUDIANTES WHERE Nombre_estudiante = @Nombre and apellido_Estudiante =
@Apellido)
BEGIN
PRINT 'Ya existe un registro con esos datos'
END
ELSE
BEGIN
INSERT INTO TB_ESTUDIANTES (ID_Estudiante, Nombre_Estudiante, Apellido_Estudiante, Direccion_Estudiante,
Telefono_Fijo_Estudiante, Telefono_Movil_Estudiante, Correo_Estudiante, Cod_Carrera ) VALUES(@Id, @Nombre,
@Apellido, @Direccion, @Telefono, @Movil, @Correo, @Carrera)
END
GO

Estructura CASE
La estructura CASE evala una lista de condiciones y
devuelve una de las varias expresiones de resultado
posibles. La expresin CASE tiene dos formatos:
La expresin CASE sencilla compara una expresin con
un conjunto de expresiones sencillas para determinar el
resultado.
La expresin CASE buscada evala un conjunto de
expresiones booleanas para determinar el resultado.
Ambos formatos admiten un argumento ELSE opcional

Estructura CASE
La estructura CASE se puede utilizar en cualquier
instruccin o clusula que permite una expresin vlida.
Por ejemplo, puede utilizar CASE en instrucciones como
SELECT, UPDATE, DELETE y SET, y en clusulas como
IN, WHERE, ORDER BY y HAVING.
La funcin CASE es una expresin especial de Transact
SQL que permite que se muestre un valor alternativo
dependiendo de una columna. Este cambio es temporal,
con lo que no hay cambios permanentes en los datos.

Estructura CASE
Sintaxis
CASE <expresion>
WHEN <valor_expresion> THEN
<valor_devuelto>
WHEN <valor_expresion> THEN
<valor_devuelto>
ELSE <valor_devuelto> -- Valor por
defecto
END

Estructura CASE
Ejemplo 1
--EJEM PLO 1
D ECLARE @ Califi
cacion IN T,
@ N otaLetra VARCH AR(1)
SET @ Califi
cacion= 87
SET @ N otaLetra= (CASE
W H EN @ Califi
cacion > = 91 TH EN 'A'
W H EN @ Califi
cacion > = 81 AN D @ Califi
cacion < = 90 TH EN 'B'
W H EN @ Califi
cacion > = 71 AN D @ Califi
cacion < = 80 TH EN 'C'
W H EN @ Califi
cacion > = 61 AN D @ Califi
cacion < = 70 TH EN 'D '
ELSE 'Reprobado'
EN D )
SELECT 'Su Evaluacin correspondiente es: '+ @ N otaLetra [N ota del
Estudiante]
GO

Estructura CASE
Ejemplo 2
--EJEM PLO 2
D ECLARE @ Califi
cacion IN T,
@ Estudiante IN T,
@ N otaLetra VARCH AR(1)
SET @ Estudiante= 9001
SELECT @ Califi
cacion= Califi
cacion_Curso FRO M
TB_CU RSO _ESTU D IAN TE W H ERE ID _Estudiante = @ Estudiante AN D
ID _CU RSO = 7020
SET @ N otaLetra= (CASE
W H EN @ Califi
cacion > = 90 TH EN 'A'
W H EN @ Califi
cacion > = 81 AN D @ Califi
cacion < 90 TH EN 'B'
W H EN @ Califi
cacion > = 71 AN D @ Califi
cacion < 80 TH EN 'C'
W H EN @ Califi
cacion > = 61 AN D @ Califi
cacion < 70 TH EN 'D '
ELSE 'Reprobado'
EN D )
SELECT 'La Evaluacin delEstudiante '+ CAST(@ Estudiante AS
VARCH AR(5)) + 'es: '+ @ N otaLetra [N ota delEstudiante]

Estructura WHILE
SINTAXIS

WHILE <expresion>
BEGIN
...
END

Estructura WHILE
SINTAXIS
WHILE BOOLEAN_EXPRESION
BEGIN
EXPRESION_SQL
[BREAK]
[EXPRESION_SQL]
[CONTINUE]
[EXPRESION_SQL]
END

Estructura WHILE
Ejemplo 1
--Ejem plo1
D ECLARE @ IdRecurso IN T;
SET @ IdRecurso = 0;
W H ILE @ IdRecurso < = 10
BEG IN
PRIN T 'w w w .utp.ac.pa/BD II/Recurso'+ CAST(@ IdRecurso AS VARCH AR(2)) ;
SET @ IdRecurso = @ IdRecurso + 1;
EN D ;
PRIN T ''
PRIN T '--------------------------------------------------------------'
PRIN T 'Cantidad de Recursos D isponibles para BD II: '+ CAST(@ IdRecurso AS
VARCH AR(2)) ;
GO

Estructura WHILE
Ejemplo 2
--Ejem plo2
D ECLARE @ Bandera IN T
SET @ Bandera = 1
W H ILE (@ Bandera < = 5)
BEG IN
PRIN T @ Bandera
SET @ Bandera = @ Bandera + 1
IF @ Bandera = 4
BEG IN
PRIN T 'Alcanzado elU m bral: '+ CAST(@ Bandera
VARCH AR(2))
BREAK;
EN D
EN D
GO

AS

Estructura WHILE
Ejemplo 3
--Ejem plo3
D ECLARE @ C adena CH AR(9)
D ECLARE @ LCadena IN T
D ECLARE @ Indice IN T
D ECLARE @ C aracter CH AR(1)
D ECLARE @ C ontar IN T
SET @ C adena = 'Ciclo For'
SET @ C ontar= 0
SET @ Indice = 1
SET @ LCadena= LEN (@ Cadena)
W H ILE @ Indice< = @ LC adena
BEG IN
SET @ C aracter = SU BSTRIN G (@ Cadena, @ Indice, 1)
PRIN T @ Caracter
SET @ Indice= @ Indice+ 1
EN D
GO

FIN DE LA SESIN

You might also like