Fonctions stockées dans MySQL

Table des matières

Les fonctions stockées dans MySQL sont utilisées pour encapsuler des calculs ou des opérations avec des enregistrements et des champs de données extraits d'une requête SQL et sont des tâches ou des règles commerciales courantes.

Un grand avantage est qu'ils sont réutilisables et que le langage de programmation dans lequel les fonctions sont développées passe par des instructions SQL et des structures conditionnelles ou répétitives.

Contrairement à une procédure stockée, vous pouvez utiliser une fonction stockée dans les instructions SQL où vous utilisez une expression qui vous permet de créer des règles conditionnelles.

Voyons un exemple, nous créons une base de données d'une école :

 CRÉER UNE BASE DE DONNÉES « collège »
Ensuite, nous créons un tableau avec les résultats des tests des étudiants
 - - Structure de la table `examnotes` - CREATE TABLE` examnotes` (`id` INT (11) NOT NULL AUTO_INCREMENT,` idalumno` INT (11) NOT NULL, `material id` INT (11) NOT NULL, `note1 ` DECIMAL (10,2) NOT NULL,` note2` DECIMAL (10,2) NOT NULL, `note3` DECIMAL (10,2) NOT NULL,` average` DECIMAL (10,2) NOT NULL, `state` VARCHAR (100) NULL DEFAULT NULL, PRIMARY KEY (` id`)) COLLATE = 'latin1_swedish_ci' ENGINE = InnoDB - Index de la table `notaseams` - ALTER TABLE` notasetest` ADD PRIMARY KEY (`id` ); Ensuite, nous ajoutons des données aux notes d'examen de la table - Dump de données pour la table `notasensam` INSERT INTO` notation exam` (`id`,` idalumno`, `subjectid`,` note1`, `note2`,` note3`, ` moyenne`,` état`) VALEURS (1, 1000, 1, '8.00', '9.25', '7.00', '0.00', ''), (2, 1001, 1, '6.33', '8.50' , '8.00', '0.00', ''), (3, 1002, 1, '10 .00 ',' 7.50 ',' 8.33 ',' 0.00 ',' '), (4, 1003, 2,' 4.50 ' , '2.00', '5.50', '0.00', ''), (5, 1004, 1, '3.50', '2.00', '4.00', '0.00', '');

Ensuite, nous allons créer une fonction stockée qui parcourra l'ensemble du tableau des notes et calculera la note moyenne de chaque élève par matière et mettra à jour le tableau pour indiquer s'il s'agit de réussite ou d'échec.

Nous pouvons créer la fonction depuis Phpmyadmin ou n'importe quel éditeur qui nous permet d'écrire du code SQL;

 CREATE DEFINER = `root` @` localhost` PROCEDURE `calculate average` () LANGUE SQL NON DETERMINISTIQUE CONTIENT SQL SQL SECURITY DEFINER COMMENT '' BEGIN / * Je déclare des variables pour la fonction * / DECLARE final BOOL DEFAULT FALSE; DECLARE id INT; DÉCLARER INT étudiant; DECLARE INT matière; DÉCLARER note1 FLOAT; DÉCLARER note2 FLOAT; DÉCLARER note3 FLOAT; DÉCLARER LE FLOTTEUR DE BAL; / * Je déclare un jeu d'enregistrements ou un curseur avec les données de la requête SQL * / DECLARE rslist CURSOR FOR SELECT id, student id, material id, note1, note2, note3 from test notes; / * Je déclare une variable pour détecter la fin d'une boucle répétitive DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET final = TRUE; / * J'ouvre le jeu d'enregistrements pour démarrer le parcours des données avec une boucle * / OPEN rslista; boucle : LOOP FETCH rslist INTO id, student, subject, grade1, grade2, grade3; / * je calcule la moyenne * / set avg = (note1 + note2 + note3) / 3; / * je l'enregistre en mettant à jour le tableau * / mettre à jour la notation de l'examen définie moyenne = d où idalumno = étudiant et idmateria = sujet; / * Si la note est supérieure ou égale à 7 je mets à jour le statut comme Approuvé sinon le statut sera Échec * / SI av> = 7 ALORS mettre à jour notaseams set status = 'Approuvé' où idalumno = étudiant et idmateria = sujet; ELSE update examen notation set status = 'Failed' où étudiant id = étudiant et sujet id = sujet; FIN SI; IF finalTHEN CLOSE rslist; LAISSER la boucle ; FIN SI; FIN DE BOUCLE ; FINIR
Ensuite, nous pouvons exécuter la fonction en utilisant la commande suivante :
 APPEL `calculer la moyenne` ()
Le résultat sera la mise à jour des colonnes moyenne et statut automatiquement.

Les fonctions stockées dans MySQL sont normalement utilisées pour les calculs et les opérations, tandis que les procédures stockées sont normalement utilisées pour exécuter des règles métier.

Les fonctions n'affectent généralement pas la structure de la base de données, mais pour effectuer des calculs, comparer et renvoyer un résultat ou modifier une donnée dans une table de la base de données, nous pouvons également créer un déclencheur pour contrôler ou auditer les modifications apportées par une fonction.

Avez-vous aimé et aidé ce tutoriel ?Vous pouvez récompenser l'auteur en appuyant sur ce bouton pour lui donner un point positif
wave wave wave wave wave