我正在MariaDB中创建一个过程,但是它给出了错误“#1064”

时间:2020-04-09 05:05:05

标签: sql mariadb procedure

我正在为MariaDB中的拆分字符串创建一个过程,但是它给出了错误

“#1064-您的SQL语法有误;请查看与您的MariaDB服务器版本相对应的手册,以获取在'TRUNCATE TABLE splittedstringtable”附近使用的正确语法

    CREATE PROCEDURE splitstring( IN splittedstring varchar(256))
BEGIN
    CREATE TABLE IF NOT EXISTS splittedstringtable (ID INT NOT NULL AUTO_INCREMENT,NAME VARCHAR(256) NOT NULL,PRIMARY KEY (ID))

 TRUNCATE TABLE `splittedstringtable`

    DECLARE x INT DEFAULT 0
    DECLARE y INT DEFAULT 0 

    SET y = 1

    IF NOT splittedstring IS NULL 
    THEN 
           SELECT LENGTH(splittedstring) - LENGTH(REPLACE(splittedstring, ',', '')) INTO @noOfCommas

           IF  @noOfCommas = 0 
          THEN 
                 INSERT INTO splittedstringtable(NAME) VALUES(splittedstring) 
          ELSE 
                SET x = @noOfCommas + 1 
                WHILE y  <=  x DO 
                   SELECT split_string(splittedstring, ',', y) INTO @engName 
                   INSERT INTO splittedstringtable(NAME) VALUES(@engName)
                   SET  y = y + 1
                END WHILE
        END IF
    END IF
END

1 个答案:

答案 0 :(得分:1)

在MariaDB / MySQL中,语句以分号;终止。在每个语句后添加分号。

您可能还想重新考虑使用临时表而不是普通表,因为当多个用户同时运行该过程时,您可能会遇到麻烦。