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

您的SQL语法有错误;声明变量时,请检查与MySQL服务器版本对应的手册,mysql,sql,mysql-workbench,Mysql,Sql,Mysql Workbench,我一直在互联网上搜索此解决方案,但未能找到此解决方案: 我正在尝试运行以下代码: BEGIN DECLARE @var int SELECT @var =5 WHILE @var > 0 PRINT replicate('* ', @var) SET @var = @var - 1 END 我一直在尝试运行此查询,并收到以下消息: ERROR 1

我一直在互联网上搜索此解决方案,但未能找到此解决方案:

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

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                 
而@var>0'在第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个记录集,这取决于您使用的编程语言,可能不支持此类多查询。在workbench中,当您运行'calltestdb1.ABC('test')时,您会看到它们

什么是
选择。。。而
?I.您的脚本中有很多错误最严重的是PRINT replicate mysql没有这两个,可能这是针对其他RDM的可能我如何打印这个?另外,在hackerrank上运行此查询时,我得到以下错误:第5行的错误1227(42000):拒绝访问;对于此操作,您需要(至少一个)超级或设置用户ID权限请在开始时检查定义者,最终以不同方式调用具有该权限的用户。此外,你想打印什么。?