sql >> Database teknologi >  >> RDS >> Mysql

MySQL Send tabelnavn til markørvalg

Jeg tror, ​​du ikke kan gøre det på denne måde.

For at opnå dette bør du bruge Dynamic SQL.

Bemærk, at du heller ikke kan åbne en markør ved hjælp af Dynamic SQL. Men i dit tilfælde synes der ikke at være behov for en markør.

Hvis jeg forstår din kode korrekt, kan du bare bruge brugervariabler og sandsynligvis opnå det, du prøver at gøre, ved at bruge 2 dynamisk forberedte sætninger.

  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;

Og så opdaterer du værdierne ved hjælp af nedenstående erklæring

  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;

Bemærk:Tjek venligst syntaksen. Jeg kan ikke teste det for at bekræfte det nøjagtigt, men jeg håber du forstår.




  1. Hvordan kan jeg indstille et tilpasset dato-tidsformat i Oracle SQL Developer?

  2. Hvordan vælger man tæller med Laravels flydende forespørgselsbygger?

  3. Eliminering af duplikering af Where-udtryk i applikationen

  4. SQL-fejl:ORA-02000:mangler ALTID nøgleord, når der oprettes en identitetskolonnebaseret tabel