有谁知道为什么我总是收到下面这个错误?我似乎无法动摇它。
call test_delete('WOW@GMAIL.COM', '''2c016cd6-87e6-11e1-9fac-001cd4565d26''', 0) 错误代码:1064。您的 SQL 中有错误句法;检查与您的 MySQL 服务器版本相对应的手册,了解在 'UPDATE user u SET u.enable = ? 附近使用的正确语法。你在哪里。'在第 2 行
DELIMITER $$
CREATE PROCEDURE `test_delete`(
IN username NVARCHAR(255),
IN district_admin_ids LONGTEXT,
IN active BIT(1)
)
BEGIN
SET @username = username;
SET @district_admin_ids = district_admin_ids;
SET @active = CASE WHEN active > 0 THEN 1 ELSE 0 END;
SET @query = CONCAT('
SET SQL_SAFE_UPDATES=0;
UPDATE user u
SET u.enable = ?
WHERE u.id IN (
SELECT da.id
FROM test da
WHERE u.id = da.id
AND u.username = ?
AND da.id IN (?)
);');
PREPARE statement FROM @query;
EXECUTE statement USING @active, @username, @district_admin_ids;
DEALLOCATE PREPARE statement;
END
最佳答案
将 SET SQL_SAFE_UPDATES=0;
移至动态查询之外,并且有效。
关于MySQL 和动态查询错误 1064,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10179988/