Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment créer et exécuter des fonctions et procédures stockées MySQL

Cet article décrit comment créer et exécuter des fonctions et procédures stockées MySQL sur votre compte d'hébergement A2. Vous pouvez utiliser des fonctions et des procédures stockées pour un large éventail de scénarios. Par exemple, des fonctions et des procédures stockées bien conçues peuvent renforcer la sécurité de la base de données, améliorer l'intégrité des données et augmenter les performances.

Fonctions stockées

Les fonctions stockées MySQL offrent un moyen puissant et flexible de manipuler et de traiter les données. Vous pouvez définir et exécuter des fonctions stockées sur n'importe quel serveur d'hébergement A2 qui utilise MySQL.

Configurer une base de données de test

Pour illustrer un exemple de base de fonctions stockées, commençons par créer une base de données que nous pouvons utiliser à des fins de test. Dans l'instruction SQL suivante, remplacez username avec le nom d'utilisateur de votre compte :

CREATE DATABASE username_test;
Vous pouvez exécuter la commande SQL précédente (et les commandes SQL suivantes) à partir de la ligne de commande à l'aide de l'outil MySQL ou dans votre navigateur Web à l'aide de phpMyAdmin.

Si vous utilisez phpMyAdmin, cliquez sur le nom nom d'utilisateur _test pour sélectionner la base de données. Sinon, si vous utilisez le programme de ligne de commande mysql, saisissez l'instruction SQL suivante :

USE username_test;

Ensuite, créez une table dans le nom d'utilisateur _test base de données nommée produits . Pour ce faire, exécutez l'instruction SQL suivante :

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));

L'instruction SQL suivante ajoute des exemples de données aux produits tableau :

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);
Création de la fonction stockée

Maintenant que nous avons une base de données et une table avec lesquelles travailler, nous sommes prêts à créer une fonction stockée. Créons une fonction nommée calcProfit . Cette fonction prend deux paramètres d'entrée :le coût et le prix de quelque chose. Il calcule le profit en soustrayant le coût du prix, puis renvoie la valeur à l'expression appelante.

Pour créer cette fonction stockée, exécutez les instructions MySQL suivantes :

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 ;
Le DELIMITER La commande au début de ces instructions empêche MySQL de traiter trop tôt la définition de la fonction. Le DELIMITER La commande à la fin de ces instructions ramène le traitement à la normale.
Utiliser la fonction stockée

Vous pouvez maintenant exécuter la fonction stockée dans une requête de base de données. L'instruction SQL suivante montre comment procéder :

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

Cette instruction SQL renvoie les résultats suivants :

+---------+--------------+-----------+------------+--------+
| 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 |
+---------+--------------+-----------+------------+--------+

Comme vous pouvez le voir, le calcProfit calcule automatiquement le bénéfice (prix moins le coût) pour chaque produit du tableau.

Procédures stockées

Les procédures stockées sont parfois confondues avec les fonctions stockées, mais elles diffèrent sur certains points importants. Les procédures stockées, par exemple, doivent être appelées avec le CALL alors que les fonctions stockées peuvent être utilisées directement dans les expressions SQL. Vous pouvez définir et exécuter des procédures stockées sur n'importe quel serveur d'hébergement A2 qui utilise MySQL.

Les instructions MySQL suivantes montrent comment créer une procédure stockée très basique nommée procedureTest . Cette procédure effectue une recherche simple sur les produits table que nous avons utilisée dans l'exemple de fonction stockée ci-dessus. Bien que cette procédure n'ait pas beaucoup d'utilité pratique, elle démontre la syntaxe et la structure correctes pour déclarer une procédure stockée :

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

Pour exécuter la procédure stockée, utilisez l'instruction MySQL suivante :

CALL procedureTest() \G
Si vous utilisez phpMyAdmin, tapez l'instruction MySQL précédente sans le \G choix à la fin.

Plus d'informations

Pour plus d'informations sur les procédures stockées et les fonctions dans MySQL, veuillez visiter http://dev.mysql.com/doc/refman/5.0/en/create-procedure.html.