Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL Übergeben Sie den Tabellennamen an die Cursorauswahl

Ich glaube, so kann man das nicht machen.

Um dies zu erreichen, sollten Sie Dynamic SQL verwenden.

Beachten Sie, dass Sie mit Dynamic SQL auch keinen Cursor öffnen können. In Ihrem Fall scheint jedoch kein Cursor erforderlich zu sein.

Wenn ich Ihren Code richtig verstehe, können Sie einfach Benutzervariablen verwenden und wahrscheinlich erreichen, was Sie mit 2 dynamisch vorbereiteten Anweisungen tun möchten.

  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;

Und dann aktualisieren Sie die Werte mit der folgenden Anweisung

  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;

Hinweis:Bitte überprüfen Sie die Syntax. Ich kann es nicht testen, um es genau zu überprüfen, aber ich hoffe, Sie verstehen es.