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

Comment supprimer « Erreur 1329 : aucune donnée » dans les procédures stockées qui ne renvoient pas de données ?

Patricia Arquette
Libérer: 2024-10-26 15:46:30
original
445 Les gens l'ont consulté

How to Suppress

Surmonter le dilemme « Erreur 1329 : aucune donnée »

De nombreux développeurs rencontrent le frustrant « Erreur 1329 : aucune donnée – aucune ligne récupérée, sélectionnée ou traitée » lorsque exécuter des procédures stockées. Cependant, cette erreur se produit souvent même lorsque la procédure fonctionne correctement, ce qui soulève la question de savoir comment supprimer ce message inutile.

Une solution potentielle réside dans la procédure stockée elle-même. Par défaut, les procédures stockées sont censées renvoyer un jeu de résultats. Cependant, si la procédure effectue des opérations qui ne génèrent aucune donnée (telles que la manipulation de données ou la mise à jour d'enregistrements), elle déclenchera le message d'erreur.

Pour résoudre ce problème, nous pouvons modifier la procédure stockée pour indiquer explicitement que il ne renvoie aucune donnée. Ceci peut être réalisé en ajoutant la ligne suivante au début de la procédure :

<code class="sql">READS SQL DATA</code>
Copier après la connexion

Cette ligne informe la base de données que la procédure lira uniquement à partir des tables et ne renverra aucune ligne.

Une autre approche consiste à gérer l'exception NOT FOUND dans la procédure. Lorsqu'un curseur est utilisé pour extraire des lignes d'une table, il peut rencontrer un scénario dans lequel il n'y a plus de lignes à extraire. Cela entraînera le curseur à lever une exception NOT FOUND. En capturant cette exception et en définissant un indicateur, nous pouvons éviter le message d'erreur.

<code class="sql">DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;</code>
Copier après la connexion

En ajoutant cette ligne, nous demandons à la base de données de définir l'indicateur terminé sur 1 lorsque le curseur rencontre l'exception NOT FOUND. Cet indicateur peut ensuite être utilisé pour quitter la boucle du curseur et terminer la procédure sans déclencher le message d'erreur.

Enfin, une autre solution de contournement consiste à exécuter une requête factice supplémentaire qui lit à partir d'une table et réussit. Cela effacera l'avertissement sur MySQL 5.5.13.

<code class="sql">SELECT name INTO l_name FROM customer_tbl LIMIT 1;</code>
Copier après la connexion

En suivant ces approches, les développeurs peuvent supprimer le message "Erreur 1329" pour les procédures stockées qui ne renvoient aucune donnée, garantissant ainsi une exécution plus fluide sans inutile invite d'erreur.

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!

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!