Tôi tin rằng bạn không thể làm điều đó theo cách này.
Để đạt được điều này, bạn nên sử dụng Dynamic SQL.
Lưu ý rằng bạn cũng không thể mở con trỏ bằng Dynamic SQL. Nhưng trong trường hợp của bạn, dường như không cần con trỏ.
Nếu tôi hiểu đúng mã của bạn, bạn có thể chỉ cần sử dụng các biến người dùng và có thể đạt được những gì bạn đang cố gắng thực hiện bằng cách sử dụng 2 câu lệnh được chuẩn bị động.
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;
Và sau đó bạn cập nhật các giá trị bằng cách sử dụng câu lệnh dưới đây
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;
Lưu ý:Vui lòng kiểm tra cú pháp. Tôi không thể kiểm tra nó để xác minh chính xác nhưng tôi hy vọng bạn sẽ hiểu.