Mysql
 sql >> Base de données >  >> RDS >> Mysql

MySQL Passe le nom de la table à la sélection du curseur

Je crois que vous ne pouvez pas le faire de cette manière.

Pour ce faire, vous devez utiliser Dynamic SQL.

Notez que vous ne pouvez pas non plus ouvrir un curseur à l'aide de Dynamic SQL. Mais dans votre cas, il ne semble pas y avoir besoin d'un curseur.

Si je comprends bien votre code, vous pouvez simplement utiliser des variables utilisateur et probablement obtenir ce que vous essayez de faire en utilisant 2 instructions préparées dynamiquement.

  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;

Et puis vous mettez à jour les valeurs en utilisant la déclaration ci-dessous

  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;

Remarque :Veuillez vérifier la syntaxe. Je ne peux pas le tester pour le vérifier exactement mais j'espère que vous avez compris.