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

MySQL - Używanie wyników procedury składowanej do definiowania instrukcji IN

Jaki typ zwrotu ma Twoja bieżąca procedura składowana? Mówisz o „liście”, więc TEKST?

Być może istnieje prostszy sposób, ale jedną rzeczą, którą możesz zrobić (w innej procedurze składowanej), jest utworzenie innego zapytania.

Aby to zrobić, musimy obejść dwa ograniczenia MySQL:a) Aby wykonać dynamiczny SQL wewnątrz procedury składowanej, musi to być przygotowana instrukcja. b) Przygotowane zestawienia można tworzyć wyłącznie ze zmiennych użytkownika. Tak więc kompletny kod SQL to:

SET @the_list = myStoredProc();
SET @the_query = CONCAT('SELECT * FROM myTable WHERE columnName IN (' , @the_list , ')');
PREPARE the_statement FROM @the_query;
EXECUTE the_statement;

Jeśli mówisz o zwróceniu zestawu wyników z zapisanej procedury, a następnie użyciu go jako tabeli, nie jest to możliwe. Musisz utworzyć tabelę tymczasową, aby obejść to ograniczenie .




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PDOException „nie można znaleźć sterownika”

  2. niespójna historia migracji podczas zmiany nazwy aplikacji django

  3. Pokaż komunikat o błędzie SQL

  4. Jak zdobyć klucz podstawowy tabeli?

  5. Gdzie znajdują się pliki bazy danych MySQL dla WAMP?