Я создаю процедуру в MariaDB, но она выдает ошибку "# 1064" - PullRequest
0 голосов
/ 09 апреля 2020

Я создаю процедуру для разделенной строки в 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 Ответ

1 голос
/ 10 апреля 2020

В MariaDB / MySQL операторы заканчиваются точкой с запятой ;. Добавьте точку с запятой после каждого утверждения.

Возможно, вы захотите пересмотреть использование временной таблицы вместо обычной таблицы, поскольку у вас могут возникнуть проблемы, когда процедура выполняется одновременно несколькими пользователями.

...