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;
Любые идеи о том, как я могу избежать добавления столбца "пустышка"?
1 ответ
Решение
В конце просто отрежьте последние два символа, чтобы потерять последнюю запятую:
SET @StatementMain = LEFT(@StatementMain, LEN(@StatementMain)-2);