PROCEDIMIENTOS Y FUNCIONES ALMACENADOS EN MYSQL
En MySQL es posible crear procedimientos y funciones como en cualquier lenguaje de programación.No es difícil, solo hay que conocer la sintaxis y ya se pueden crear.
A continuación pongo un ejemplo de como insertar un registro en una tabla, mediante un procedimiento almacenado, y se le pasan los valores por defecto. Este ejemplo sencillo sirve para ver como se crean los procedimientos almacenados pero en teoría es para crear códigos más complejos y su mayor ventaja es que al estar almacenado en la base de datos se ejecuta en un servidor separado y no interfiere en la ejecución de la aplicación. Otra ventaja< es que pueden ser llamados desde diferente aplicaciones indistintamente.
DELIMITER $$
CREATE PROCEDURE crearContacto (IN email VARCHAR(100),IN address VARCHAR(100),IN firstname VARCHAR(20),IN lastname VARCHAR(20),IN phone VARCHAR(16))
BEGIN
INSERT INTO
contact(firstname,lastname,address,email,phonenumber)
VALUES (firstname,lastname,address,email,phone);
END$$
DELIMITER ;
DELIMITER $$
CREATE PROCEDURE coches(IN velocidad INT,IN marca VARCHAR(50))
BEGIN
IF velocidad < 120 THEN
INSERT INTO familiares VALUES (velocidad,marca);
ELSE
INSERT INTO deportivos VALUES (velocidad,marca);
END IF;
END$$
DELIMITER ;
Para llamar a dicho procedimiento se usa la función CALL:
CALL crearContacto('probando@gonzalo.es','gaztambide','gonzalo','lopez','123456789')DELIMITER $$
CREATE FUNCTION crearContact (email VARCHAR(100),address VARCHAR(100), firstname VARCHAR(20), lastname VARCHAR(20), phone VARCHAR(16)) RETURNS INT
BEGIN
INSERT INTO contact(firstname,lastname,address,email,phonenumber) VALUES (firstname,lastname,address,email,phone);
RETURN last_insert_id();
END$$
DELIMITER ;
El siguiente cambio es que en el paso de parámetros ya no se escribe la palabra reservada IN sino que se pone el parámetro tal cual. Luego se indica el tipo de valor que se va a devolver. El resto de sintaxis es igual.h2 style="color:#333; border-bottom:2px solid #0a5; padding-bottom:8px; margin:40px 0 20px;">LLAMAR A UN PROCEDIMIENTO Y A UNA FUNCIÓN En esto hay también diferencias y la verdad es que no tiene nada que ver ninguna con la otra. Os pongo un ejemplo para que lo veáis.h2 style="color:#333; border-bottom:2px solid #0a5; padding-bottom:8px; margin:40px 0 20px;">LLAMADA A UN PROCEDIMIENTO
CALL procedure_name(list of params);
LLAMADA A UNA FUNCIÓN
Select function_name(list of params);
DIFERENCIA ENTRE UN PROCEDIMIENTO Y UNA FUNCIÓN
La mayor diferencia es que un procedimiento no devuelve ningún valor y una función hay otras diferencias conceptuales, pero para que todo el mundo entienda la diferencia solo pongo ésta. Pero podéis buscar en internet, para profundizar más en el tema.
También se puede ver como crear cursores en mysql
Select function_name(list of params);
La mayor diferencia es que un procedimiento no devuelve ningún valor y una función hay otras diferencias conceptuales, pero para que todo el mundo entienda la diferencia solo pongo ésta. Pero podéis buscar en internet, para profundizar más en el tema.
También se puede ver como crear cursores en mysql