Je crois que vous ne pouvez pas le faire de cette manière.
Pour ce faire, vous devez utiliser Dynamic SQL.
Notez que vous ne pouvez pas non plus ouvrir un curseur à l'aide de Dynamic SQL. Mais dans votre cas, il ne semble pas y avoir besoin d'un curseur.
Si je comprends bien votre code, vous pouvez simplement utiliser des variables utilisateur et probablement obtenir ce que vous essayez de faire en utilisant 2 instructions préparées dynamiquement.
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;
Et puis vous mettez à jour les valeurs en utilisant la déclaration ci-dessous
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;
Remarque :Veuillez vérifier la syntaxe. Je ne peux pas le tester pour le vérifier exactement mais j'espère que vous avez compris.