sql >> Databasteknik >  >> RDS >> Mysql

MySQL Skicka tabellnamn till markörval

Jag tror att du inte kan göra det på det här sättet.

För att uppnå detta bör du använda Dynamic SQL.

Observera att du inte heller kan öppna en markör med Dynamic SQL. Men i ditt fall verkar det inte finnas något behov av en markör.

Om jag förstår din kod rätt kan du bara använda användarvariabler och förmodligen uppnå det du försöker göra med två dynamiskt förberedda satser.

  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;

Och sedan uppdaterar du värdena med hjälp av uttalandet nedan

  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;

Obs:Kontrollera syntaxen. Jag kan inte testa det för att verifiera det exakt men jag hoppas att du förstår idén.




  1. MySql FLOAT datatyp och problem med mer än 7-siffrig skala

  2. SequelizeConnectionError:självsignerat certifikat

  3. Ta bort med Gå med i MySQL

  4. Hur får jag den aktuella tidszonen för MySQL?