Jag tror att du inte kan göra det på det här sättet.
För att uppnå detta bör du använda Dynamic SQL.
Observera att du inte heller kan öppna en markör med Dynamic SQL. Men i ditt fall verkar det inte finnas något behov av en markör.
Om jag förstår din kod rätt kan du bara använda användarvariabler och förmodligen uppnå det du försöker göra med två dynamiskt förberedda satser.
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;
Och sedan uppdaterar du värdena med hjälp av uttalandet nedan
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;
Obs:Kontrollera syntaxen. Jag kan inte testa det för att verifiera det exakt men jag hoppas att du förstår idén.