Dette kan ikke gøres direkte, fordi outputtet af et ubundet valg i en lagret procedure er et resultatsæt sendt til klienten, men ikke teknisk set en tabel.
Løsningen er at lade procen lægge dataene i en midlertidig tabel efter at have oprettet tabellen for dig. Denne tabel vil kun være tilgængelig for din forbindelse, når proceduren er færdig. Det vil ikke forårsage en konflikt, hvis en anden kører processen på samme tid og ikke vil være synlig for nogen anden forbindelse.
Føj dette til proceduren:
DROP TEMPORARY TABLE IF EXISTS foo;
CREATE TEMPORARY TABLE foo SELECT ... your existing select query here ...;
Når din procedure er færdig, SELECT * FROM foo;
vil give dig, hvad du ville have fået fra proc. Du kan deltage i det stort set som ethvert bord.
Når du er færdig, skal du slippe den, ellers går den væk af sig selv, når du afbryder forbindelsen. Hvis du kører processen igen, vil den blive droppet og genskabt.