Maison  >  Article  >  base de données  >  Qu'est-ce que la procédure stockée de chaîne MySQL

Qu'est-ce que la procédure stockée de chaîne MySQL

PHPz
PHPzavant
2023-06-01 22:31:29659parcourir

1. Définir une procédure stockée de chaîne

Dans MySQL, vous pouvez utiliser la commande DELIMITER pour spécifier un délimiteur différent de ";" afin d'utiliser plusieurs instructions SQL dans la procédure stockée. Par exemple, une procédure stockée nommée my_proc est définie dans l'exemple suivant, qui utilise le délimiteur "//" :

DELIMITER //
CREATE PROCEDURE my_proc()
BEGIN
    -- 定义字符串变量
    DECLARE my_str VARCHAR(50) DEFAULT 'Hello, world!';

    -- 输出字符串变量
    SELECT my_str;

    -- 修改字符串变量的值
    SET my_str = CONCAT(my_str, ' MySQL!');

    -- 再次输出字符串变量
    SELECT my_str;
END //
DELIMITER ;

Dans l'exemple ci-dessus, utilisez d'abord la commande DELIMITER pour définir le délimiteur sur "//", puis A La variable chaîne nommée my_str est définie, avec une valeur initiale de "Hello, world!". Ensuite, la valeur de la variable my_str est sortie dans la procédure stockée, puis la valeur est modifiée à l'aide de la commande SET. Lorsque la valeur de la variable my_str est sortie, il s'avère qu'elle est devenue "Bonjour tout le monde ! MySQL". !".

2. Transmettre les paramètres à la procédure stockée de chaîne

Normalement, dans les applications pratiques, vous devez transmettre des paramètres à la procédure stockée afin d'effectuer différentes opérations basées sur ces paramètres. Une procédure stockée nommée my_proc est définie dans l'exemple suivant, qui accepte deux paramètres (x et y), calcule leur somme et renvoie le résultat :

DELIMITER //
CREATE PROCEDURE my_proc(IN x INT, IN y INT, OUT result INT)
BEGIN
    SET result = x + y;
END //
DELIMITER ;

Dans l'exemple ci-dessus, le mot-clé IN est utilisé pour définir x et y comme entrées Paramètres, utilisez le mot-clé OUT pour définir le résultat comme paramètre de sortie (c'est-à-dire que la procédure stockée renverra la valeur du résultat). Le corps de la procédure stockée contient simplement une instruction SQL calculée qui ajoute les valeurs de x et y et stocke le résultat dans la variable result.

Ensuite, vous pouvez utiliser la commande CALL pour appeler la procédure stockée my_proc et transmettre deux paramètres, par exemple :

SET @x = 10;
SET @y = 20;
CALL my_proc(@x, @y, @result);
SELECT @result;

Dans l'exemple ci-dessus, les deux variables @x et @y sont d'abord définies et affectées aux valeurs​ ​10 et 20 ; puis la procédure stockée my_proc est appelée à l'aide de la commande CALL, et @x et @y sont passés comme paramètres d'entrée ; enfin, la sortie @result de la procédure stockée est envoyée à la console.

3. Utilisez des instructions IF et des structures de boucle

Une logique plus complexe peut être obtenue en appliquant des instructions IF et des structures de boucle dans des procédures stockées. Par exemple, l'exemple suivant définit une procédure stockée nommée my_proc, qui accepte un paramètre n, calcule le nième nombre de la séquence de Fibonacci et renvoie le résultat :

DELIMITER //
CREATE PROCEDURE my_proc(IN n INT, OUT result INT)
BEGIN
    DECLARE i INT DEFAULT 1;
    DECLARE a INT DEFAULT 1;
    DECLARE b INT DEFAULT 1;

    IF n <= 0 THEN
        SET result = 0;
    ELSEIF n = 1 OR n = 2 THEN
        SET result = 1;
    ELSE
        WHILE i < n DO
            SET result = a + b;
            SET a = b;
            SET b = result;
            SET i = i + 1;
        END WHILE;
    END IF;
END //
DELIMITER ;

Dans l'exemple ci-dessus, utilisez l'instruction IF pour porter le jugement : If n est inférieur ou égal à 0, il renvoie 0 directement ; si n est égal à 1 ou 2, il renvoie 1 sinon, utilisez la boucle WHILE pour calculer le nième nombre de la séquence de Fibonacci.

Vous pouvez utiliser la commande CALL pour appeler la procédure stockée my_proc et transmettre un paramètre, par exemple :

SET @n = 10;
CALL my_proc(@n, @result);
SELECT @result;

Dans l'exemple ci-dessus, attribuez le paramètre @n à 10, appelez la procédure stockée my_proc et affichez sa sortie @result au contrôle Sur scène. Le résultat final devrait être 55 car le dixième nombre de la séquence de Fibonacci est 55.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer