SQL错误[1064][42000]:您的SQL语法有错误;检查与您的MySQL对应的手册

SQL错误[1064][42000]:您的SQL语法有错误;检查与您的MySQL对应的手册,mysql,stored-procedures,syntax-error,ddl,Mysql,Stored Procedures,Syntax Error,Ddl,我是mysql新手。我正在做一个存储过程。我需要在下面创建一个临时表。但是,在执行此操作时,我发现以下错误: SQL错误[1064][42000]:您的SQL中有一个错误 句法;检查与您的MySQL对应的手册 要使用正确语法的服务器版本(接近“) 开始 声明一个bigint默认值0; 声明str VARCHAR(255); '在第1行 我无法知道我的sql语句到底出了什么问题。附加相同的脚本。我们非常感谢您对修复此错误的任何帮助。我的mysql版本是5.7 DELIMITER $$

我是mysql新手。我正在做一个存储过程。我需要在下面创建一个临时表。但是,在执行此操作时,我发现以下错误: SQL错误[1064][42000]:您的SQL中有一个错误 句法;检查与您的MySQL对应的手册 要使用正确语法的服务器版本(接近“) 开始 声明一个bigint默认值0; 声明str VARCHAR(255); '在第1行 我无法知道我的sql语句到底出了什么问题。附加相同的脚本。我们非常感谢您对修复此错误的任何帮助。我的mysql版本是5.7

    DELIMITER $$  

    CREATE PROCEDURE ABC(in fullstr varchar)

      BEGIN
    DECLARE a bigint  ;
    DECLARE str VARCHAR;
    DECLARE v_statment varchar;
    set @v_statment = ('create temporary table count_temp (id 
    bigint auto_increment , 
    subscriberid bigint , PRIMARY KEY (id))') ;
    prepare stmt from @v_statment ;
    execute stmt;
    simple_loop: LOOP
    SET a=a+1;
    SET str=SPLIT_STR(fullstr,",",a);
    IF str='' THEN
    LEAVE simple_loop;
    END IF;
   
    insert into count_temp (subscriberid) values (str);
    END LOOP simple_loop;

    END $$
    delimiter ;

确保
分隔符$$
后面没有空格,并确保后面有正确的换行符。你的问题的格式让我觉得你有多余的空间,这会让解析器感到困惑。@BillKarwin-我在格式上有问题-我现在把它清除了。请让我知道我做错了什么第一个错误是
VARCHAR
需要一个长度,比如
VARCHAR(50)
。我还看到了MySQL不支持的函数
SPLIT\u STR()
的使用。我认为您正在MySQL上使用Microsoft SQL Server功能。这是两种不同的软件产品,具有不同的功能和语法。如果您使用MySQL,您需要学习MySQL的文档。