MySql中的DECLARE错误


DECLARE Error in MySql

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服务器版本对应的手册,以便在第1行"DECLARE @num INT DEFAULT = 5"附近使用正确的语法

我不知道如何修复这个错误和DECLARE应该工作。

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

DECLARE @num INT DEFAULT 5; 

或者,你可以这样写:

SET @num = 5;
编辑:

那么看起来你的代码块不是一个存储程序。正如文档明确指出的:

LIMIT子句可用于约束行数由SELECT语句返回。LIMIT接受一个或两个数字参数,它们必须都是非负整数常量这些异常:

  • 在预处理语句中,LIMIT参数可以使用?占位符标记。

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

因此,在存储过程、用户定义函数、触发器或动态SQL中允许执行您想要执行的操作。但是,并不是所有SQL查询都允许这样做。