Tester existence d'un SELECT par une fonction ?
Bonjour,
Je voudrais écrire une fonction (peut-être est-ce une procédure du coup ?) qui me renvoie 0 ou 1 selon l'existence d'un résultat :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
|
DELIMITER $$
DROP FUNCTION IF EXISTS `test_cdf`.`existence`$$
CREATE FUNCTION `test_cdf`.`existence` (ps TEXT)
RETURNS INT DETERMINISTIC
BEGIN
DECLARE fnd INT DEFAULT 0;
main: BEGIN
DECLARE CONTINUE HANDLER FOR NOT FOUND SET fnd = 1;
SELECT probeset_name FROM test_cdf.probeset
WHERE probeset_name = ps;
END main;
RETURN fnd;
END$$
DELIMITER ; |
Avec comme erreur :
Code:
! Not allowed to return a result set from a function
J'ai essayé avec IF EXISTS SELECT... et IF ISNULL SELECT mais ça capote aussi... :?
Question très subsidiaire: j'utilise Perl avec DBD::MySQL, sauriez-vous s'il y a moyen directement de tester ceci ? J'ai essayé $sth->prepare("SELECT...") || warn "..." mais il n'y a pas de code de retour. Le while(my @array = $sth->fetchrow_array) ne s'effectue pas s'il n'y a pas de réponse, je ne peux pas contrôler l'existance à cette étape non plus.
Sauriez vous comment faire ceci ?
En vous remerciant,
C. Tobini