sql >> Database >  >> RDS >> Mysql

Tabeluitvoer van opgeslagen MYSQL-procedure gebruiken?

Dit kan niet rechtstreeks worden gedaan, omdat de uitvoer van een onbeperkte selectie in een opgeslagen procedure een resultaatset is die naar de client is verzonden, maar technisch gezien geen tabel.

De tijdelijke oplossing is om de proc de gegevens in een tijdelijke tabel te laten plaatsen nadat de tabel voor u is gemaakt. Deze tabel is alleen beschikbaar voor uw verbinding wanneer de procedure is voltooid. Het veroorzaakt geen conflict als iemand anders de proc tegelijkertijd uitvoert en is niet zichtbaar voor een andere verbinding.

Voeg dit toe aan de procedure:

DROP TEMPORARY TABLE IF EXISTS foo;
CREATE TEMPORARY TABLE foo SELECT ... your existing select query here ...;

Wanneer uw procedure is voltooid, SELECT * FROM foo; zal je geven wat je zou hebben gekregen van de proc. Je kunt er net als elke andere tafel aan deelnemen.

Als je klaar bent, laat je het vallen, anders verdwijnt het vanzelf als je de verbinding verbreekt. Als je de procedure opnieuw uitvoert, wordt deze verwijderd en opnieuw gemaakt.



  1. MySQL ATAN2() Functie – Retourneer de boogtangens van 2 waarden

  2. Updatequery's optimaliseren

  3. Android - JSON mySQL-query geeft NetworkOnMainThreadException

  4. Fix "ERROR 1054 (42S22):Onbekende kolom 'colname' in 'orderclausule' in MariaDB