Mysql
 sql >> Database >  >> RDS >> Mysql

Come utilizzare l'output della tabella dalla procedura MYSQL archiviata

Questo non può essere fatto, direttamente, perché l'output di una selezione illimitata in una procedura memorizzata è un set di risultati inviato al client, ma tecnicamente non una tabella.

La soluzione alternativa è consentire al proc di inserire i dati in una tabella temporanea dopo aver creato la tabella per te. Questa tabella sarà disponibile solo per la tua connessione al termine della procedura. Non causerà un conflitto se qualcun altro esegue il processo contemporaneamente e non sarà visibile a nessun'altra connessione.

Aggiungi questo alla procedura:

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

Al termine della procedura, SELECT * FROM foo; ti darà quello che avresti ottenuto dal proc. Puoi unirti ad esso praticamente come qualsiasi tavolo.

Quando hai finito, lascialo cadere o scomparirà da solo quando ti disconnetti. Se esegui di nuovo il proc, verrà eliminato e ricreato.