是否可以将准备好的语句的结果设置为变量?我试图创建下面的存储过程,但它失败:如何从准备好的语句中获得标量结果?
31行错误1064(42000):您的SQL语法错误;检查与你的MySQL服务器版本相对应的手册,在'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 ;
啊!当然!! – 2010-10-21 22:37:41
我知道这个答案是非常古老的,但任何人都可以告诉我:当我使用这段代码并使用CALL myProc(600)时,它不返回空查询结果,而是返回最后一次“有效”调用。为什么是这样的,我该如何改变这一点?当我传递一个不在表中的值时,它应该将'result'返回为空。 – Meelah 2017-10-18 15:11:41