sql >> Databasteknik >  >> RDS >> Mysql

Hur man använder tabellutdata från lagrad MYSQL-procedur

Detta kan inte göras direkt, eftersom utdata från ett obegränsat urval i en lagrad procedur är en resultatuppsättning som skickas till klienten, men inte tekniskt sett en tabell.

Lösningen är att låta procen placera data i en tillfällig tabell efter att ha skapat tabellen åt dig. Den här tabellen kommer endast att vara tillgänglig för din anslutning när proceduren är klar. Det kommer inte att orsaka en konflikt om någon annan kör processen samtidigt och inte kommer att vara synlig för någon annan anslutning.

Lägg till detta till proceduren:

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

När din procedur är klar, SELECT * FROM foo; kommer att ge dig vad du skulle ha fått från proc. Du kan gå med på det ungefär som vilket bord som helst.

När du är klar, släpp den, annars försvinner den av sig själv när du kopplar bort. Om du kör processen igen kommer den att tas bort och återskapas.



  1. Hur kombinerar man aggregerade funktioner i MySQL?

  2. Php login password_verify

  3. Använder variabel i en LIMIT-sats i MySQL

  4. Multi-Dimensional Array från matchande mysql-kolumner