Wie erhalte ich ein skalares Ergebnis aus einer vorbereiteten Anweisung?
Ist es möglich, das Ergebnis einer vorbereiteten Anweisung in eine Variable zu setzen? Ich versuche, die folgende gespeicherte Prozedur zu erstellen, aber sie schlägt fehl:
FEHLER 1064 (42000) in Zeile 31: Ihre SQL-Syntax ist fehlerhaft. Überprüfen Sie das Handbuch, das Ihrer MySQL-Serverversion entspricht, auf die richtige Syntax für die Verwendung in der Nähe von '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 ;