Eu acredito que você não pode fazê-lo desta maneira.
Para conseguir isso, você deve usar o SQL dinâmico.
Observe que você também não pode abrir um cursor usando SQL dinâmico. Mas no seu caso, parece não haver necessidade de um cursor.
Se eu entendi seu código corretamente, você pode apenas usar variáveis de usuário e provavelmente conseguir o que está tentando fazer usando 2 instruções preparadas dinamicamente.
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;
E então você atualiza os valores usando a instrução abaixo
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;
Nota:Por favor, verifique a sintaxe. Eu não posso testá-lo para verificá-lo exatamente, mas espero que você tenha a idéia.