Mysql
 sql >> Baza danych >  >> RDS >> Mysql

MySQL Przekaż nazwę tabeli do wyboru kursora

Uważam, że nie możesz tego zrobić w ten sposób.

Aby to osiągnąć, powinieneś użyć Dynamic SQL.

Zauważ, że nie możesz otworzyć kursora również za pomocą Dynamic SQL. Ale w twoim przypadku wydaje się, że nie ma potrzeby używania kursora.

Jeśli dobrze rozumiem Twój kod, możesz po prostu użyć zmiennych użytkownika i prawdopodobnie osiągnąć to, co próbujesz zrobić, używając 2 dynamicznie przygotowanych instrukcji.

  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 następnie aktualizujesz wartości za pomocą poniższego oświadczenia

  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;

Uwaga:Sprawdź składnię. Nie mogę tego przetestować, aby dokładnie to zweryfikować, ale mam nadzieję, że wpadniesz na pomysł.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zapytanie MySQL do ElasticSearch

  2. Uruchom MySQL INSERT Query wiele razy (wstaw wartości do wielu tabel)

  3. Połącz się ze źródłem danych MySQL w PHPStorm

  4. Stała wartość kolumny w tabeli MySQL

  5. Grupuj według kombinacji 2 pól, a następnie uporządkuj według sumy każdej grupy, wiele adnotacji django