MySQL 和动态查询错误 1064

标签 mysql sql stored-procedures

有谁知道为什么我总是收到下面这个错误?我似乎无法动摇它。

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/

相关文章:

php - 如何同时将upload表主键(ID)插入到info表(ID)中?

c++ - SQLite 更新 100 毫秒

java - 如何将可选参数传递给过程?

php - MySQLi 语法不一致错误

iphone - 使用 iphone SDK 搜索 MySQL?

查询语句。 SP 或函数应计算星期五的下一个日期

sql - 为什么这个 pg 查询这么慢?我怎样才能让它更快?

mysql - 使用 EJB 查询调用 MySql 例程/存储过程

mysql - 如何将 1 到 1000 之间的数字插入到我在过程中创建的表中?

javascript - AJAX 表单未提交并给出错误