Escolar Documentos
Profissional Documentos
Cultura Documentos
Unidad 12
Autor
Isabel Ponce
Unidad 12
Objetivos
• Lenguaje de Programación
– Control de flujo
• Lotes
• Comentarios
• declare
– Tipos de datos
– Variables locales
– Variable globales
• begin…end
• if…else
• case
• while…
• return
Lenguajes de
Programación
– comentarios
– declare
– begin…end
– if…else
– case
– loop...end loop
– repeat ...end repeat
– while…end while
– iterate
– leave
– return
• Un lote es un grupo de
instrucciones SQL ejecutadas
al mismo tiempo.
• Ejemplo:
title
------------------------------------------------------------------
The Busy Executive's Database Guide
...
(18 row(s) affected)
au_lname
----------------------------------------
White
Green
Carson
O'Leary
Straight
...
(23 row(s) affected)
stor_name
Comentarios
DELIMITER //
CREATE PROCEDURE proc1 ()
BEGIN
DECLARE a INT;
DECLARE b INT;
SET a = 5;
SET b = 5;
SELECT a, b, a * b;
END; //
Variables Locales
• Un bloque se indica:
begin
<instrucción>*
end
begin
select title from titles;
select au_lname from authors;
select stor_name from stores;
end;
if…else
if <expresión_lógica> then
<instrucción>
[elseif <expresión_lógica>] then
<instrucción>]
[else <instrucción>]
end if
select …, case
<columna_a_trasnformar>
when <expBúsqueda1> then
<expReemplazo1>
…
when <expBúsquedaN> then
<expReemplazoN>
[else <expRemplazoContrario>]
end [as <alias>]
case
• Ejemplo:
select …, case
when <expLógica1> then
<expReemplazo1>
…
when <expLógicaN> then
<expReemplazoN>
[else <expRemplazoContrario>]
end [as <alias>]
case
• Ejemplo:
CREATE PROCEDURE p6 ()
BEGIN
DECLARE v INT;
SET v = 0;
WHILE v < 5 DO
INSERT INTO t2 VALUES (v);
SET v = v + 1;
END WHILE;
END; //
[<etiquetaX>] repeat
<Bloque de instrucciones a ejecutar
hasta que la condición sea
verdadera>
until <expresión lógica> end repeat
[<etiquetaX>] ;
[<etiquetaX>] loop
<Bloque de instrucciones que incluyen if -
leave>
end loop [<etiquetaX>] ;
create procedure p8()
begin
declare v int;
set v = 0;
etiqueta_ciclo: LOOP
insert into t2 values (v);
set v = v + 1;
if v >= 5 then
LEAVE etiqueta_ciclo;
end if;
END LOOP;
end;
leave e iterate