Проблема последней строки MySQL при использовании курсора для сборки подготовленного оператора

Я использую курсор для создания подготовленного оператора, и он работает довольно хорошо (на самом деле лучше, чем ожидалось) .
Но я не могу осмыслить «вызов последней строки», как я бы сейчас назвал его. Мне нужно добавить фальшивый SELECT в последнюю строку оператора, чтобы запрос не заканчивался точкой с запятой.

    OPEN cEmployeeSkill;

    -- loop through temp table
    getLine: LOOP
        FETCH cEmployeeSkill INTO vSkill;

        IF vFinished = 1 THEN
            SET @StatementTemp = CONCAT('MAX(CASE WHEN Skill_id = 0 THEN SkillLevelName END) AS \Dummy\' ');
            SET @StatementMain = CONCAT(@StatementMain,@StatementTemp);
            LEAVE getLine;
        END IF;

        -- get the current title of the skill
        SET @ColumnTitle = (SELECT SkillName FROM tbl_Skill WHERE Skill_id = vSkill GROUP BY SkillName LIMIT 1);

        -- do the pivot thing
        SET @StatementTemp = CONCAT('MAX(CASE WHEN Skill_id = ',vSkill,' THEN SkillLevelName END) AS \'',@ColumnTitle,'\', ');

        -- add the new line to the statment
        SET @StatementMain = CONCAT(@StatementMain,@StatementTemp);

    END LOOP getLine;

    CLOSE cEmployeeSkill;


Любые идеи о том, как избежать добавления «пустого» столбца?

Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
0
0
17
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

SET @StatementMain = LEFT(@StatementMain, LEN(@StatementMain)-2);

Вы сделали мой день! Мне пришлось заменить LEN на LENGTH, но в остальном абсолютно идеально.

Psymon 18.12.2018 22:00

Другие вопросы по теме