代码之家  ›  专栏  ›  技术社区  ›  confiq

存储过程中mysql子查询中的整数

  •  2
  • confiq  · 技术社区  · 14 年前

    我做了简单的程序只是为了证明

     CREATE PROCEDURE `demo`(demo_int int)
    BEGIN
     DECLARE minid INT;
     SELECT min(id) FROM (SELECT id FROM events LIMIT demo_int,9999999999999999) as hoo INTO minid;
    END$$
    

    如果我把它改成

    LIMIT 1,9999999999999999
    

    它起作用,但是

    LIMIT demo_int,9999999999999999
    

    不… 它产生错误

    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'demo_int,9999999999999999) as hoo INTO minid; END' at line 4 (errno: 1064)
    

    有什么线索吗?

    1 回复  |  直到 14 年前
        1
  •  2
  •   Dal Hundal    14 年前

    问题(无论它是一个bug还是一个特性是一个有争议的问题)是您不能将该参数与limit语句一起使用。limit语句采用整数常量,在这种情况下,关键是它们必须 常量 , 不是变量 .

    here 提交的错误报告,以及 here 对于可能涉及使用准备好的语句的解决方法。