Kann das Ergebnis einer vorbereiteten Anweisung in eine Variable gesetzt werden? Ich versuche, die folgende gespeicherte Prozedur zu erstellen, aber es schlägt fehl:Wie skalare Ergebnisse aus vorbereiteten Anweisungen erhalten?
Fehler 1064 (42000) Zeile 31: Sie haben einen Fehler in Ihrer SQL-Syntax; Überprüfen Sie das Handbuch, das Ihrer MySQL-Server-Version entspricht, für die richtige Syntax 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 ;
Ah! Na sicher!! –
Ich weiß, dass diese Antwort sehr alt ist, aber kann mir jemand sagen: Wenn ich diesen Code benutze und ich CALL myProc (600) verwende, gibt es kein leeres Abfrageergebnis zurück, sondern gibt den letzten 'gültigen' Aufruf zurück. Warum ist das und wie kann ich das ändern? Es sollte "result" als leer zurückgeben, wenn ich einen Wert übergebe, der nicht in der Tabelle enthalten ist. – Meelah