Maison >base de données >tutoriel mysql >**Comment résoudre « Erreur 1329 : Aucune donnée » dans les procédures stockées lorsqu'aucun résultat n'est attendu ?**
Problème :
Vous avez une procédure stockée cela n’a pas besoin de renvoyer de valeurs. Il s'exécute avec succès, mais il génère un message d'erreur une fois terminé :
Error: No data - zero rows fetched, selected, or processed
Solution :
Le message d'erreur apparaît car la procédure stockée ne gère pas explicitement le cas où aucune donnée n’est renvoyée par aucune de ses opérations. Pour résoudre ce problème, vous pouvez inclure une instruction DECLARE CONTINUE HANDLER pour ignorer l'erreur NOT FOUND :
<code class="sql">DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;</code>
Explication :
L'instruction DECLARE CONTINUE HANDLER indique à MySQL de ignorez l'erreur NOT FOUND et continuez à exécuter la procédure stockée. Dans votre cas spécifique, cette instruction doit être ajoutée après la boucle qui parcourt les lignes de la table customer_tbl :
<code class="sql">my_cur_loop: LOOP FETCH my_cur INTO l_name; IF done = 1 THEN LEAVE my_cur_loop; END IF; INSERT INTO names_tbl VALUES(l_name); END LOOP my_cur_loop; DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;</code>
Remarque supplémentaire :
Pour la version MySQL 5.5.13 et supérieur, vous pouvez également ajouter une instruction « factice » à la fin de la procédure stockée pour effacer l'avertissement :
<code class="sql">SELECT name INTO l_name FROM customer_tbl LIMIT 1;</code>
Cette instruction est réussie et n'implique aucune donnée, effaçant ainsi le message d'avertissement.
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!