Vérifier si la ligne existe de l'utilisation de Mysql magasin de procédure ne fonctionne pas
À mysql invite de commande, je lance:
SELECT EXISTS (SELECT 1 FROM test1 WHERE name1 like '%Nadiya%')
retourne
EXISTS (SELECT 1 FROM test1 WHERE name1 like '%Nadiya%')
1
mais, à la suite de la procédure n'a pas l'impression qu'elle Existe. J'ai besoin de connaître de l'intérieur SI l'instruction.
S'il vous plaît laissez-moi savoir ce que le changement pourrait me faire à l'intérieur SI.
DELIMITER //
CREATE PROCEDURE verifyAndUpdate30(in searchName varchar(12), in searchId bigint, inout result int)
BEGIN
IF ( SELECT EXISTS (SELECT 1 FROM test1 WHERE name1 like '%searchName%') ) THEN
SELECT 'EXISTS';
UPDATE TEST SET testFlag=1 WHERE id=searchId;
SET result=1;
ELSE
SELECT 'DOES NOT EXISTS';
END IF;
SELECT result;
END
//
DELIMITER ;
Appel de procédure:
SET @increment = 0;
call verifyAndUpdate30('Nadiya', 5532, @increment);
Vous devez vous connecter pour publier un commentaire.
Vous avez besoin pour construire le
LIKE
chaîne à la dure, à l'aide deCONCAT('%', searchName, '%')
:SELECT
, comme:IF (EXISTS ( SELECT ... FROM ... WHERE ...)) THEN
Vous avez besoin de les concaténer.
Depuis
searchName
peut être pris comme une chaîne codée en dur, remplacer votre requête de cette façon:Code Complet
Voir plus sur
CONCAT
dans MySQL.