Maison > Article > base de données > La procédure stockée MySQL renvoie-t-elle plusieurs jeux de résultats ?
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 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
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
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
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!