Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

MySQL Pass nome da tabela para seleção do cursor


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.