【问题标题】:allocated prepared query error syntax error分配准备好的查询错误语法错误
【发布时间】:2018-03-02 14:31:41
【问题描述】:

我尝试在自定义 mysql 函数中执行变量查询,这是脚本:

DELIMITER $

CREATE FUNCTION is_present(in_id BIGINT, in_table_name VARCHAR(255)) RETURNS BIT
BEGIN
  DECLARE stm VARCHAR(255);
  DECLARE result BIT DEFAULT 0;

  SET stm := CONCAT('SELECT IF(COUNT(*), 1, 0) INTO result FROM', in_table_name, 'WHERE id=? LIMIT 1');
  PREPARE query FROM stm;
  EXECUTE query USING in_id;
  DEALLOCATE PREPARE query;

  RETURN result;
END $

DELIMITER ;

Mysql 警告我语法:

您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册以获取正确的语法使用 靠近'stm;使用 in_id 执行查询; DEALLOCATE PREPARE 查询; 返回结果; ' 在第 9 行

【问题讨论】:

    标签: mysql prepared-statement


    【解决方案1】:

    我认为您在 var name 之前缺少一个分号:

    PREPARE query FROM :stm;
    

    【讨论】:

      猜你喜欢
      • 2014-06-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-11
      • 1970-01-01
      相关资源
      最近更新 更多