Procedimiento Almacenado y Estructuras de Control en MySQL WHILE, IF THEN ELSE, SWITCH


Bien como ya hemos visto los procedimientos almacenados son muy interesantes, aquí no hemos visto estructuras de control, como lo son IF, SWITCH, WHILE,VARIABLES, etc… y creo que es bueno comenzar con esta ultima.

VARIABLES

DECLARE edad INT;

Esta tendrá un ámbito local y cuando se acabe el procedimiento no podrá ser accedida. Una vez la variable es declarada, para cambiar su valor usaremos la sentencia SET  como en el siguiente ejemplo:

SET edad = 56 ;

Para poder acceder a una variable a la finalización de un procedimiento se tiene que usar parámetros de salida como en el siguiente Código:

IF THEN ELSE

delimiter //
CREATE procedure miProc(IN p1 int)     /* Parámetro de entrada */
begin
declare miVar int;        /* se declara variable local */
SET miVar = p1 +1 ;        /* se establece la variable */
IF miVar = 12 then
INSERT INTO lista VALUES(55555);
else
INSERT INTO lista VALUES(7665);
end IF;
end;
//

SWITCH

delimiter //
CREATE procedure miProc (IN p1 int)
begin
declare var int ;
SET var = p1 +2 ;
case var
when 2 then INSERT INTO lista VALUES (66666);
when 3 then INSERT INTO lista VALUES (4545665);
else INSERT INTO lista VALUES (77777777);
end case;
end;
//

Creo que no hacen falta explicaciones.

COMPARACIÓN DE CADENAS

delimiter //
CREATE procedure compara(IN cadena varchar(25), IN cadena2 varchar(25))
begin
IF strcmp(cadena, cadena2) = 0 then
SELECT "son iguales!";
else
SELECT "son diferentes!!";
end IF;
end;
//

La función strcmp devuelve 0 si las cadenas son iguales, si no devuelve 0 es que son diferentes.

USO DE WHILE

delimiter //
CREATE procedure p14()
begin
declare v int;
SET v = 0;
while v < 5 do
INSERT INTO lista VALUES (v);
SET v = v +1 ;
end while;
end;
//

Un while de toda la vida.

USO DEL REPEAT

delimiter //
CREATE procedure p15()
begin
declare v int;
SET v = 20;
repeat
INSERT INTO lista VALUES(v);
SET v = v + 1;
until v <= 1
end repeat;
end;
//

El repeat es similar a un “do while” de toda la vida.

Anuncios

Acerca de Francisco Castán

Creador, Diseñador, Investigador y Programador de Software Lenguajes Preferidos: C/C++, C#, Java, PHP, Python, PERL, Shell, JavaScript

Publicado el 29/12/2010 en MySQL y etiquetado en . Guarda el enlace permanente. 8 comentarios.

  1. esta excelente el material justo lo que necesitaba muchas gracias

  2. My buen material,tendra ejemplos con varios parametros de salida??

  3. Jose Maria Gonzalez

    Excelente material didactico es de una gran ayuda para los que empezamos a conocer Procedimientos almacenados en MySql

  4. Hola que tal buenas, tengo una duda con un ejemplo similar al que publicas. Ejem.
    Tengo un procedimiento en cual recibe un valor varchar y quiero compararlo para verificar si existe en una tabla de la BD como le puedo para hacer esa comparación, gracias por su apoyo…

    • Sería algo como:

      delimiter //
      CREATE procedure compara(IN cadena varchar(25))
      begin
      declare v int;
      SELECT v=COUNT(*) FROM mitabla m WHERE m.Campo = Cadena;
      IF v>0 then
      SELECT “La cadena existe”;
      else
      SELECT “La cadena no existe”;
      end IF;
      end;
      //

  5. estimados dentro de los ejemplos necesito una tabla lista?? para ejecutar un procedimiento es con execute

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: