Mysql
 sql >> Database >  >> RDS >> Mysql

MySQL Passa il nome della tabella alla selezione del cursore

Credo che tu non possa farlo in questo modo.

Per raggiungere questo obiettivo, dovresti utilizzare Dynamic SQL.

Nota che non puoi nemmeno aprire un cursore usando Dynamic SQL. Ma nel tuo caso, sembra che non ci sia bisogno di un cursore.

Se ho capito correttamente il tuo codice, puoi semplicemente utilizzare le variabili utente e probabilmente ottenere ciò che stai cercando di fare utilizzando 2 istruzioni preparate 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 poi aggiorni i valori usando la seguente istruzione

  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:controllare la sintassi. Non posso testarlo per verificarlo esattamente, ma spero che tu abbia un'idea.