sql >> Database >  >> RDS >> Mysql

MySQL - Opgeslagen procedureresultaten gebruiken om een ​​IN-instructie te definiëren

Welk retourtype heeft uw huidige opgeslagen procedure? Je hebt het over "een lijst", dus TEKST?

Misschien is er een eenvoudigere manier, maar één ding dat u kunt doen (in een andere opgeslagen procedure) is om een ​​andere query te maken.

Om dat te doen, moeten we twee beperkingen van MySQL omzeilen:a) Om dynamische SQL uit te voeren binnen een opgeslagen procedure, moet het een voorbereide instructie zijn. b) Voorbereide instructies kunnen alleen worden gemaakt op basis van gebruikersvariabelen. De volledige SQL is dus:

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;

Als je het hebt over het retourneren van een resultatenset uit een opgeslagen routine en deze vervolgens als tabel te gebruiken, is dat niet mogelijk. U moet een tijdelijke tabel maken om deze beperking te omzeilen .




  1. Datum en tijd bijwerken in MySQL via python

  2. PostgreSQL array_agg volgorde

  3. Hoe de tijdzoneregio voor JDBC Connection in te stellen en te voorkomen dat de SqlException-tijdzoneregio niet wordt gevonden?

  4. Hoe maak ik back-ups in MySQL?