mysql使用游标组装准备好的语句时的最后一行挑战

vdgimpew  于 2021-06-15  发布在  Mysql
关注(0)|答案(1)|浏览(367)

我使用一个游标来构建一个准备好的语句,效果非常好(实际上比预期的要好)。
但我不能把我的头绕在“最后一行挑战”我现在想叫它。
我需要在语句的最后一行添加一个假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;

关于如何避免添加“dummy”列,有什么想法吗?

mctunoxg

mctunoxg1#

最后,去掉最后两个字符,去掉最后一个逗号:

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

相关问题