J'ai cette fonction:fonction MySQL stockée, comment vérifier pour aucune ligne et ne pas générer un avertissement?
DROP FUNCTION IF EXISTS find_linkid;
DELIMITER //
CREATE FUNCTION `find_linkid`(pc1 VARCHAR(50)
RETURNS INT
BEGIN
DECLARE linkId int;
SELECT a.id INTO linkId FROM PC_A a WHERE a.pc=pc1;
ON
IF linkId IS NULL THEN
SELECT b.id INTO linkId FROM PC_B b WHERE b.pc=pc1;
END IF;
RETURN linkId;
END
//
Fondamentalement, exécutez une requête, si cela ne retourne rien (la a.id est déclarée comme NOT NULL), exécutez une autre requête et retourne l'identifiant de lien. Si cela n'est pas trouvé non plus, linkId sera NULL, renvoyant NULL si pc1 n'est pas trouvé du tout est OK.
Cela fonctionne, mais donne des avertissements si la première requête ne retourne rien:
select find_linkid('12BD');
+------------------------------+
| find_linkid('12BD') |
+------------------------------+
| 667 |
+------------------------------+
1 row in set, 1 warning (0.00 sec)
mysql> show warnings;
+---------+------+-----------------------------------------------------+
| Level | Code | Message |
+---------+------+-----------------------------------------------------+
| Warning | 1329 | No data - zero rows fetched, selected, or processed |
+---------+------+-----------------------------------------------------+
1 row in set (0.00 sec)
Quelle est la bonne façon d'exécuter une requête, si cela ne retourne rien, exécutez une autre requête?