您的 SQL 语法有错误;在声明变量时检查与您的 MySQL 服务器版本相对应的手册

Posted

技术标签:

【中文标题】您的 SQL 语法有错误;在声明变量时检查与您的 MySQL 服务器版本相对应的手册【英文标题】:You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version while declaring a variable 【发布时间】:2020-08-23 20:58:29 【问题描述】:

我一直在整个互联网上搜索这个解决方案,但我无法找到解决方案:

我正在尝试运行以下代码:

BEGIN             
    DECLARE @var int             
    SELECT @var =5
    WHILE @var > 0    
    PRINT replicate('* ', @var)     
    SET @var = @var - 1             
    END

我一直在尝试运行此查询,并且收到以下消息:

ERROR 1064 (42000): 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 'DECLARE @var int SELECT @var = 5                 

WHILE @var > 0 ' 在第 1 行

我知道已经迭代了很多次,但是其他对话中讨论的解决方案在我的控制台上没有运行。

【问题讨论】:

什么是SELECT ... WHILE?我don't think that's a thing. 你的脚本中有很多错误,最严重的是 PRINT 复制 mysql 没有两者,也许这是另一个 rdms 【参考方案1】:

你的代码其实是sql server,在mysql里不行

DELIMITER $$
CREATE DEFINER=`root`@`%` PROCEDURE `ABC`(
IN _tablename VARCHAR(50) -- is a parameter in which table       
                            --    name is stored
)
BEGIN
             
    SET @var = 5;             
    WHILE @var > 0  DO
    select repeat('* ', @var);
    SET @var = @var - 1;             
    END  WHILE;
End$$
DELIMITER ;

为了让你更好的理解。

此过程返回 5 个记录集,具体取决于您使用的编程语言,可能不支持此类多查询。在工作台中你会看到它们,当你运行 `CALL testdb1.ABC('test');

【讨论】:

我该如何打印? 另外,在hackerrank上运行这个查询时,我得到了以下错误: 第 5 行的错误 1227 (42000):访问被拒绝;您需要(至少一个)SUPER 或 SET_USER_ID 权限才能进行此操作 请在开始时检查 DEFINER,最终您拥有该权限的用户会被不同地调用。此外,您还想打印什么?

以上是关于您的 SQL 语法有错误;在声明变量时检查与您的 MySQL 服务器版本相对应的手册的主要内容,如果未能解决你的问题,请参考以下文章

#1064 - 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以获取在 ')' 附近使用的正确语法

您的 SQL 语法有错误;检查与您的 MariaDB 服务器版本相对应的手册,以获取在 '0 附近使用的正确语法

SQL 语法错误:您的 SQL 语法有错误;检查与您的 MariaDB 服务器版本相对应的手册

SQLSTATE[42000]:语法错误或访问冲突:1064 您的 SQL 语法有错误;检查与您的 MariaDB 对应的手册

您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的 '' 附近使用正确的语法

SQL 错误:您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册以获取正确的语法