Est-il possible de définir le résultat d'une instruction préparée dans une variable? J'essaye de créer la procédure stockée suivante mais elle échoue:Comment obtenir un résultat scalaire à partir d'une instruction préparée?
ERREUR 1064 (42000) à la ligne 31: Vous avez une erreur dans votre syntaxe SQL; consultez le manuel qui correspond à votre version du serveur MySQL pour la bonne syntaxe à utiliser près de 'stmt USING @m, @c, @a;
DROP PROCEDURE IF EXISTS deleteAction;
DELIMITER $$
CREATE PROCEDURE deleteAction(
IN modul CHAR(64),
IN controller CHAR(64),
IN actn CHAR(64))
MODIFIES SQL DATA
BEGIN
PREPARE stmt FROM 'SELECT id
FROM actions
WHERE `module` = ?
AND `controller` = ?
AND `action` = ?';
SET @m = modul;
SET @c = controller;
SET @a = actn;
SET @i = EXECUTE stmt USING @m, @c, @a;
DEALLOCATE PREPARE stmt;
DELETE FROM acl WHERE action_id = @i;
DELETE FROM actions WHERE id = @i;
END
$$
DELIMITER ;
Ah! Bien sûr!! –
Je sais que cette réponse est très ancienne, mais quelqu'un peut-il me dire: quand j'utilise ce code et que j'utilise CALL myProc (600), il ne retourne pas un résultat de requête vide mais renvoie le dernier appel 'valide'. Pourquoi est-ce et comment puis-je changer cela? Il devrait retourner 'result' comme vide quand je lui passe une valeur qui n'est pas dans la table. – Meelah