¿Es posible establecer el resultado de una declaración preparada en una variable? Estoy intentando crear el siguiente procedimiento almacenado pero está fallando:¿Cómo obtener el resultado escalar de una declaración preparada?
ERROR 1064 (42000) en la línea 31: Tiene un error en la sintaxis SQL; revise el manual que corresponde a su versión del servidor MySQL para la sintaxis correcta para usar cerca 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! ¡¡Por supuesto!! –
Sé que esta respuesta es muy antigua, pero ¿alguien me puede decir: cuando uso este código y uso CALL myProc (600), no devuelve un resultado de consulta vacío sino que devuelve lo que fue la última llamada "válida". ¿Por qué es eso y cómo puedo cambiar eso? Debería devolver 'result' como vacío cuando le paso un valor que no está en la tabla. – Meelah