sql >> Base de Datos >  >> RDS >> Mysql

MySQL Pasar el nombre de la tabla a la selección del cursor

Creo que no puedes hacerlo de esta manera.

Para lograr esto, debe usar Dynamic SQL.

Tenga en cuenta que tampoco puede abrir un cursor usando Dynamic SQL. Pero en su caso, parece que no hay necesidad de un cursor.

Si entiendo su código correctamente, solo puede usar variables de usuario y probablemente lograr lo que está tratando de hacer usando 2 declaraciones preparadas dinámicamente.

  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;

Y luego actualiza los valores usando la siguiente declaración

  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:compruebe la sintaxis. No puedo probarlo para verificarlo exactamente, pero espero que te hagas una idea.