Mostrando entradas con la etiqueta stored procedure. Mostrar todas las entradas
Mostrando entradas con la etiqueta stored procedure. Mostrar todas las entradas

TUTORIAL DE STORED PROCEDURE

Posted: jueves, 23 de junio de 2011 by Skuarch in Etiquetas: , , ,
0



En esta entrada explico un stored procedure sencillo este nuevo post sobre stored procedure toma cosas mas complejas como la es crear un select con variables y asi es como empezamos.

La estructura basica para crear un stored procedure es la siguiente

#para el caso de desarrollo siempre tenemos que tener este comando
DROP PROCEDURE IF EXISTS mysp;

DELIMITER //
CREATE PROCEDURE mysp ()

BEGIN

#declaracion de variables y con DEFAULT se inicializan
DECLARE var1 INT DEFAULT 0;
DECLARE var2 VARCHAR(15);

END

//
DELIMITER ;



Para poder crear un select dinamico utilizando variables dentro de este mismo nececitamos crear un string y despues prepararlo para que sea ejecutado, de la siguente forma


SET @qry = CONCAT("SELECT * FROM tabla WHERE id = ", var1);
PREPARATE query FROM @qry;
EXECUTE query;


Con esto podemos crear un select dinamico y puede ser mas complejo.


SET @qry = CONCAT("SELECT algo INTO var2 FROM tabla WHERE id = ", var1);
PREPARATE query FROM @qry;
EXECUTE query;



Entonces nuestro stored procedure quedaria mas o menos asi


DELIMITER //
CREATE PROCEDURE mysp ()

BEGIN

#declaracion de variables y con DEFAULT se inicializan
DECLARE var1 INT DEFAULT 0;
DECLARE var2 VARCHAR(15);

SET @qry = CONCAT("SELECT algo INTO var2 FROM tabla WHERE id = ", var1);
PREPARATE query FROM @qry;
EXECUTE query;


END

//
DELIMITER ;


las variables que tienen @ como @qry son variables de usuario

4




Este es un pequeño ejemplo de como crear un Stored Procedure en mysql que no regrese nada.

Paso 1:
Como es comun en la programacion se tienen muchos errores y para crear un sp (Stored Procedure) se realiza a base de prueba/error, para eso ponemos en la primer linea esto:

DROP PROCEDURE IF EXISTS mysp;


el nombre del stored procedure es mysp

Paso 2:
se tiene que utilizar un delimitador, yo utilizo //
DELIMITER //

este delimitidor mas adelante se debe de cerrar.
con la sentencia
CREATE PROCEDURE mysp ()

indicamos la creacion del sp, el sp debe de tener un cuerpo y un final para eso usamos las etiquetas BEGIN y END

Entonces ya temenos esta parte de codigo

DELIMITER //
CREATE PROCEDURE mysp ()

BEGIN

END

//
DELIMITER ;#aqui es donde se cierra el delimitador


La instruccion DELIMITER ; esta ultima instruccion debe de tener un espacio antes del ";"

Paso 3:
Declaracion y asignacion de variables, la declaracion de variables dentro de un sp es de la siguiente forma.

DECLARE var1 INT DEFAULT 0; #variables enteras
DECLARE var2 VARCHAR(15); #variables varchar tambien le podemos decir strings


La asignacion se realiza de esta manera:

SET vat1 = "hola";


Tambien existe otra forma de aisgnarles valores que se ve mas adelante.

Paso 4: (opcional)
Podemos tener un ciclo dentro del sp de la siguiente forma.

WHILE v1 <= 10 DO
SET v1 = v1 +1;
END WHILE;


Llenar variables con resultados de un select

SELECT campo INTO variable FROM tabla LIMIT 1;


Para llenar las variables de este tipo el resultado del select solo tienes que regresar un registro, de lo contrario tendriamos un error, podemos llenar varias variables dentro del mismo select

SELECT campo1,campo2,campo3 INTO variable1,variable2,variable3 FROM tabla LIMIT 1;


Nuestro codigo hasta el paso 4 se veria asi:

DROP PROCEDURE IF EXISTS mysp;

DELIMITER //
  CREATE PROCEDURE mysp ()

   BEGIN
    DECLARE var1 INT DEFAULT 0;
    DECLARE var2 VARCHAR(15);

    WHILE var1 <= 10 DO

     SELECT campo INTO var2 FROM tabla LIMIT 1;
     SET var1 = var1 + 1; #var1 +=

    END WHILE;

   END

//
DELIMITER ;


para llamar al procedure se utiliza:

call mysp();


Eso es todo para un ejemplo sencillo !!!!