sql >> Base de Datos >  >> RDS >> Mysql

Cómo crear y ejecutar funciones y procedimientos almacenados en MySQL

Este artículo describe cómo crear y ejecutar funciones y procedimientos almacenados de MySQL en su cuenta de A2 Hosting. Puede utilizar funciones y procedimientos almacenados para una amplia gama de escenarios. Por ejemplo, las funciones y los procedimientos almacenados bien diseñados pueden mejorar la seguridad de la base de datos, mejorar la integridad de los datos y aumentar el rendimiento.

Funciones almacenadas

Las funciones almacenadas de MySQL proporcionan una forma potente y flexible de manipular y procesar datos. Puede definir y ejecutar funciones almacenadas en cualquier servidor de A2 Hosting que utilice MySQL.

Configurando una base de datos de prueba

Para demostrar un ejemplo básico de funciones almacenadas, comencemos creando una base de datos que podamos usar con fines de prueba. En la siguiente instrucción SQL, reemplace nombre de usuario con el nombre de usuario de su cuenta:

CREATE DATABASE username_test;
Puede ejecutar el comando SQL anterior (y los siguientes comandos SQL) desde la línea de comandos usando la herramienta MySQL, o en su navegador web usando phpMyAdmin.

Si está utilizando phpMyAdmin, haga clic en el nombre nombre de usuario _test para seleccionar la base de datos. De lo contrario, si está utilizando el programa de línea de comandos mysql, escriba la siguiente instrucción SQL:

USE username_test;

A continuación, cree una tabla en el nombre de usuario _prueba base de datos llamada productos . Para hacer esto, ejecute la siguiente instrucción SQL:

CREATE TABLE products (prod_id INT NOT NULL AUTO_INCREMENT, prod_name VARCHAR(20) NOT NULL, prod_cost FLOAT NOT NULL DEFAULT 0.0, prod_price FLOAT NOT NULL DEFAULT 0.0, PRIMARY KEY(prod_id));

La siguiente instrucción SQL agrega algunos datos de muestra a los productos tabla:

INSERT INTO products (prod_name, prod_cost, prod_price) VALUES ('Basic Widget',5.95,8.35),('Micro Widget',0.95,1.35),('Mega Widget',99.95,140.00);
Creando la función almacenada

Ahora que tenemos una base de datos y una tabla para trabajar, estamos listos para crear una función almacenada. Vamos a crear una función llamada calcProfit . Esta función toma dos parámetros de entrada:el costo y el precio de algo. Calcula la ganancia restando el costo del precio y luego devuelve el valor a la expresión de llamada.

Para crear esta función almacenada, ejecute las siguientes declaraciones de MySQL:

DELIMITER $$
CREATE FUNCTION calcProfit(cost FLOAT, price FLOAT) RETURNS DECIMAL(9,2)
BEGIN
  DECLARE profit DECIMAL(9,2);
  SET profit = price-cost;
  RETURN profit;
END$$
DELIMITER ;
El DELIMITADOR El comando al comienzo de estas declaraciones evita que MySQL procese la definición de la función demasiado pronto. El DELIMITADOR El comando al final de estas declaraciones devuelve el procesamiento a la normalidad.
Usando la función almacenada

Ahora puede ejecutar la función almacenada en una consulta de base de datos. La siguiente instrucción SQL demuestra cómo hacer esto:

SELECT *, calcProfit(prod_cost,prod_price) AS profit FROM products;

Esta instrucción SQL devuelve los siguientes resultados:

+---------+--------------+-----------+------------+--------+
| prod_id | prod_name    | prod_cost | prod_price | profit |
+---------+--------------+-----------+------------+--------+
|       1 | Basic Widget |      5.95 |       8.35 |   2.40 |
|       2 | Micro Widget |      0.95 |       1.35 |   0.40 |
|       3 | Mega Widget  |     99.95 |        140 |  40.05 |
+---------+--------------+-----------+------------+--------+

Como puede ver, el calcProfit La función calcula automáticamente la ganancia (precio menos el costo) para cada producto en la tabla.

Procedimientos almacenados

Los procedimientos almacenados a veces se confunden con las funciones almacenadas, pero son diferentes en algunos aspectos importantes. Los procedimientos almacenados, por ejemplo, deben invocarse con CALL instrucción, mientras que las funciones almacenadas se pueden usar directamente en expresiones SQL. Puede definir y ejecutar procedimientos almacenados en cualquier servidor de A2 Hosting que utilice MySQL.

Las siguientes declaraciones de MySQL demuestran cómo crear un procedimiento almacenado muy básico llamado procedureTest . Este procedimiento realiza una búsqueda simple en los productos tabla que usamos en el ejemplo de función almacenada anterior. Aunque este procedimiento no tiene mucho uso práctico, demuestra la sintaxis y la estructura correctas para declarar un procedimiento almacenado:

DELIMITER $$
CREATE PROCEDURE procedureTest()
BEGIN
  SELECT prod_name FROM products;
END$$
DELIMITER ;

Para ejecutar el procedimiento almacenado, use la siguiente declaración de MySQL:

CALL procedureTest() \G
Si está utilizando phpMyAdmin, escriba la instrucción MySQL anterior sin \G opción al final.

Más Información

Para obtener más información sobre los procedimientos y funciones almacenados en MySQL, visite http://dev.mysql.com/doc/refman/5.0/en/create-procedure.html.