Вярвам, че не можете да го направите по този начин.
За да постигнете това, трябва да използвате Dynamic SQL.
Имайте предвид, че не можете да отворите курсор и с помощта на Dynamic SQL. Но във вашия случай изглежда няма нужда от курсор.
Ако разбирам кода ви правилно, можете просто да използвате потребителски променливи и вероятно да постигнете това, което се опитвате да направите, като използвате 2 динамично подготвени оператора.
SET @stmt_text=CONCAT("SELECT @score = SUM(`score`), @maxscore=SUM(`maxscore`) FROM ",
answertable, "WHERE `idParticipation`= ", partid);
PREPARE stmt FROM @stmt_text;
EXECUTE stmt USING @a;
И след това актуализирате стойностите, като използвате израза по-долу
SET @stmt_text=CONCAT("UPDATE", participationtable, " SET `score`[email protected],
`maxscore`[email protected] WHERE `idParticipation`=", partid);
PREPARE stmt FROM @stmt_text;
EXECUTE stmt USING @a;
DEALLOCATE PREPARE stmt;
Забележка:Моля, проверете синтаксиса. Не мога да го тествам, за да го проверя точно, но се надявам, че схващате идеята.