sql >> Database >  >> RDS >> Mysql

MySQL Geef tabelnaam door aan cursorselectie

Ik geloof dat je het op deze manier niet kunt doen.

Om dit te bereiken, moet u Dynamic SQL gebruiken.

Merk op dat u ook geen cursor kunt openen met Dynamic SQL. Maar in jouw geval lijkt er geen cursor nodig te zijn.

Als ik je code goed begrijp, kun je gewoon gebruikersvariabelen gebruiken en waarschijnlijk bereiken wat je probeert te doen met behulp van 2 dynamisch voorbereide instructies.

  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;

En dan werk je de waarden bij met behulp van de onderstaande verklaring

  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;

Opmerking:controleer de syntaxis. Ik kan het niet testen om het precies te verifiëren, maar ik hoop dat je het idee snapt.




  1. Maak een nieuwe Ruby on Rails-toepassing met MySQL in plaats van SQLite

  2. SQL Server-afrondingsfout, verschillende waarden geven

  3. Fork gebruiken in Ruby on Rails voor het creëren van een parallel proces

  4. Een opgeslagen procedure uitvoeren met cursor in PHP