Maison > base de données > tutoriel mysql > le corps du texte

La procédure stockée MySQL renvoie-t-elle plusieurs jeux de résultats ?

(*-*)浩
Libérer: 2020-09-14 14:01:27
original
10011 Les gens l'ont consulté

Cet article présentera les résultats lorsque la procédure stockée renvoie plusieurs ensembles de résultats. J'espère qu'il pourra être une référence pour tout le monde.

La procédure stockée MySQL renvoie-t-elle plusieurs jeux de résultats ?

La fonction stockée MySQL ne renvoie qu'une valeur. Pour développer une procédure stockée qui renvoie plusieurs valeurs, vous devez utiliser une procédure stockée avec des paramètres INOUT ou OUT.

Regardons d'abord la structure d'une table de commandes :

mysql> desc orders;
+----------------+-------------+------+-----+---------+-------+
| Field          | Type        | Null | Key | Default | Extra |
+----------------+-------------+------+-----+---------+-------+
| orderNumber    | int(11)     | NO   | PRI | NULL    |       |
| orderDate      | date        | NO   |     | NULL    |       |
| requiredDate   | date        | NO   |     | NULL    |       |
| shippedDate    | date        | YES  |     | NULL    |       |
| status         | varchar(15) | NO   |     | NULL    |       |
| comments       | text        | YES  |     | NULL    |       |
| customerNumber | int(11)     | NO   | MUL | NULL    |       |
+----------------+-------------+------+-----+---------+-------+
7 rows in set
Copier après la connexion

Ensuite, regardons une procédure stockée qui accepte les numéros de clients et les retours expédiés et annulés), le nombre total de commandes résolues et contestées commandes (ensembles de résultats multiples) :

DELIMITER $$
 
CREATE PROCEDURE get_order_by_cust(
 IN cust_no INT,
 OUT shipped INT,
 OUT canceled INT,
 OUT resolved INT,
 OUT disputed INT)
BEGIN
 -- shipped
 SELECT
            count(*) INTO shipped
        FROM
            orders
        WHERE
            customerNumber = cust_no
                AND status = 'Shipped';
 
 -- canceled
 SELECT
            count(*) INTO canceled
        FROM
            orders
        WHERE
            customerNumber = cust_no
                AND status = 'Canceled';
 
 -- resolved
 SELECT
            count(*) INTO resolved
        FROM
            orders
        WHERE
            customerNumber = cust_no
                AND status = 'Resolved';
 
 -- disputed
 SELECT
            count(*) INTO disputed
        FROM
            orders
        WHERE
            customerNumber = cust_no
                AND status = 'Disputed';
 
END
Copier après la connexion

En fait, en plus des paramètres IN, la procédure stockée nécessite également 4 paramètres OUT supplémentaires : expédié, annulé, résolu et contesté. Dans la procédure stockée, utilisez l'instruction select avec la fonction count pour obtenir le total de la commande correspondant en fonction du statut de la commande et affectez-le au paramètre correspondant. Selon le SQL ci-dessus, si nous voulons utiliser la procédure stockée get_order_by_cust, nous pouvons transmettre le numéro de client et quatre variables définies par l'utilisateur pour obtenir la valeur de sortie. Après avoir exécuté la procédure stockée, nous utilisons l'instruction SELECT pour afficher la valeur de la variable :

+----------+-----------+-----------+-----------+
| @shipped | @canceled | @resolved | @disputed |
+----------+-----------+-----------+-----------+
|       22 |         0 |         1 |         1 |
+----------+-----------+-----------+-----------+
1 row in set
Copier après la connexion

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal