estructuras de control
A la hora de crear procedimientos almacenados en MySQL tenemos la opción de utilizar distintos tipos de bucles y de condicionales, loque nos dotará de la capacidad de llevar a cabo acciones más complejas dentro de nuestros procedimientos.
Para esto disponemos de las estructuras de control IF THEN ELSE, CASE, WHILE y REPEAT, además depoder definir y declarar variables locales dentro de los procedimientos.
Variables:
Para declarar una variable la definimos con DEFINE y la inicializamos con SET:
1
2
DEFINE varprueba INT; #definimosla variable y su tipo
SET varprueba = 10; #le damos un valor concordante con el tipo
IF THEN ELSE:
El condicional simple IF que tenemos en la mayoría de los lenguajes de programación, que puede sercomplementado o no con un ELSE para el caso de que no se cumpla. La sintaxis es IF condición THEN (el ELSE si hace falta) END IF. Podéis ver un ejemplo:
1
2
3
4
5
6
7
8
9
10
delimiter $$
CREATEprocedure ej(IN val int) /* Parámetro de entrada */
begin
IF val = 0 then
INSERT INTO tbejemplo VALUES('No disponible');
else
INSERT INTO tbejemplo VALUES(val);
end IF; end$$
delimiter ;
CASE:
Condicional que nos permite evaluar el valor de una variable y realizar diversas acciones según varias posibilidades. Es una forma de abreviar un montón de IF anidados. En este casoel ELSE nos permite definir un valor por defecto (como el default en un switch/case de C, Java o PHP):
1
2
3
4
5
6
7
8
9
10
delimiter $$
CREATE procedure ej(IN val int) /* Parámetro de entrada*/
begin
case val
when 5 then INSERT INTO prueba VALUES('Suficientes');
when 4 then INSERT INTO prueba VALUES('Reserva');
else INSERT INTO prueba VALUES ('Insuficientes);
endcase;
end$$
delimiter;
WHILE:
Un bucle que hace que un procedimiento se repita mientras se de una condición. Si la condición ya no se da antes de entrar al bucle, no entra.
1
2
3
4
5
6
7
8
9
10...
Regístrate para leer el documento completo.