Uważam, że nie możesz tego zrobić w ten sposób.
Aby to osiągnąć, powinieneś użyć Dynamic SQL.
Zauważ, że nie możesz otworzyć kursora również za pomocą Dynamic SQL. Ale w twoim przypadku wydaje się, że nie ma potrzeby używania kursora.
Jeśli dobrze rozumiem Twój kod, możesz po prostu użyć zmiennych użytkownika i prawdopodobnie osiągnąć to, co próbujesz zrobić, używając 2 dynamicznie przygotowanych instrukcji.
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;
A następnie aktualizujesz wartości za pomocą poniższego oświadczenia
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;
Uwaga:Sprawdź składnię. Nie mogę tego przetestować, aby dokładnie to zweryfikować, ale mam nadzieję, że wpadniesz na pomysł.