MySQL в последней строке вызов при использовании курсора для сборки подготовленного оператора - PullRequest
0 голосов
/ 18 декабря 2018

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

Мне нужно добавить поддельный 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;


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

1 Ответ

0 голосов
/ 18 декабря 2018

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

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