MySql中的DECLARE错误

时间:2015-09-26 16:19:17

标签: php mysql sql

DECLARE @num INT DEFAULT = 5; 

SELECT * FROM page p LEFT JOIN categorylinks c ON p.page_id = c.cl_from 
WHERE c.cl_to = 'Art-Rock-Band' LIMIT @num

UNION ALL

SELECT * FROM page p LEFT JOIN categorylinks c ON p.page_id = c.cl_from 
WHERE c.cl_to = 'Echo-Pop-Preisträger' LIMIT @num

UNION ALL

SELECT * FROM page p LEFT JOIN categorylinks c ON p.page_id = c.cl_from 
WHERE c.cl_to = 'Englische_Band' LIMIT @num

它返回错误

  

您的SQL语法有错误;检查与您的MySQL服务器版本相对应的手册,以便在#DEC; DECLARE @num INT DEFAULT = 5'附近使用正确的语法。在第1行

我不知道如何修复此错误,DECLARE应该可以正常工作。

1 个答案:

答案 0 :(得分:3)

假设这是在begin / end块中,您不需要=符号:

DECLARE @num INT DEFAULT 5; 

或者,您可以这样做:

SET @num = 5;

编辑:

然后看起来您的代码块不是存储的程序。正如documentation明确指出:

  

LIMIT子句可用于约束行数   由SELECT声明返回。 LIMIT需要一两个数字   参数,必须都是非负整数常量,用   这些例外:

     
      
  • 在准备好的语句中,可以使用?LIMIT参数指定?占位符标记。

  •   
  • 在存储的程序中,可以使用整数值例程参数或局部变量指定LIMIT个参数。

  •   

因此,您希望在存储过程,用户定义函数,触发器或动态SQL中执行此操作。但是,不允许任何SQL查询。