sql >> Databáze >  >> RDS >> Mysql

MySQL Předat název tabulky výběru kurzoru

Věřím, že tímto způsobem to udělat nemůžete.

Abyste toho dosáhli, měli byste používat dynamické SQL.

Všimněte si, že kurzor nelze otevřít ani pomocí dynamického SQL. Ale ve vašem případě se zdá, že kurzor není potřeba.

Pokud správně rozumím vašemu kódu, můžete použít uživatelské proměnné a pravděpodobně dosáhnout toho, o co se snažíte, pomocí 2 dynamicky připravených příkazů.

  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;

A poté aktualizujete hodnoty pomocí níže uvedeného příkazu

  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;

Poznámka:Zkontrolujte prosím syntaxi. Nemohu to otestovat, abych to přesně ověřil, ale doufám, že to pochopíte.




  1. Jak upravit passthrough / passthru dotaz?

  2. Jak uložím data relace PHP do databáze místo do systému souborů?

  3. 2 způsoby, jak zkontrolovat, zda je na serveru SQL povolen přístup k datům (příklady T-SQL)

  4. MYSQL Geo Search s výkonem na dálku