Nella maggior parte dei casi, durante l'esecuzione di query SQL utilizzando MySQL Shell o MySQL Workbench, non salviamo i risultati, anche se abbiamo la funzionalità per salvare i risultati elaborati dal server utilizzando una procedura memorizzata.
In questo tutorial, non discuterò di procedure, funzioni o trigger memorizzati. Invece, mi immergerò semplicemente nel mostrarti come puoi usare i cursori MySQL per eseguire i risultati nelle procedure memorizzate.
Prima di iniziare a creare e usare un cursore con esempi, prendiamo un momento per discutere alcuni punti chiave su un cursore di cui dovresti essere consapevole:
Caratteristiche di un cursore MySQL
Ora che sappiamo cosa significa un cursore, possiamo iniziare a illustrare come funziona usando esempi del mondo reale:
Uso di base
La sintassi generale per dichiarare un cursore in MySQL è semplice. Iniziamo utilizzando la parola chiave Dichiarazione come mostrato nella query di esempio di seguito:
Come dichiarare un cursore
Dichiarare cursore cursore_name per select_expression;Il cursore_name è il nome dato al cursore durante la dichiarazione. Si noti che la dichiarazione di un cursore dovrebbe essere dopo qualsiasi variabile dichiarata per impedire a MySQL di causare errori.
Il prossimo è il Select_Expression, che memorizza l'istruzione SELECT associata al cursore.
Come aprire un cursore
Una volta dichiarato un cursore e MySQL è consapevole che esiste il cursore, possiamo iniziare a usarlo che richiede l'apertura del cursore.
La sintassi generale per aprire un cursore è come mostrato nella query seguente:
Cursor_name aperto;Questo comando apre i cursori a cui si fa riferimento e si può iniziare a usarlo.
Come recuperare i dati
Avere il cursore aperto consente di recuperare le informazioni memorizzate in una procedura, una funzione o un trigger.
La sintassi generale per recuperare i dati utilizzando un cursore è mostrata:
Fetch Cursor_Name in variabili;NOTA: Come accennato, assicurarsi che il cursore venga utilizzato dopo che le variabili siano dichiarate per evitare errori.
Come chiudere e rilasciare un cursore
Una volta completate le operazioni che richiedono il cursore definito, è meglio chiudere il cursore che libera la memoria associata ad esso.
Una volta che un cursore è stato chiuso, un utente deve riaprire il cursore utilizzando le parole chiave aperte (mostrato sopra) prima di utilizzare il cursore.
Non è necessario dichiarare il cursore dopo la dichiarazione stretta.
La sintassi generale per chiudere un cursore è come mostrato nella query seguente:
Chiudere cursore_name;Gestione degli errori
Il cursore MySQL funziona leggendo ricorsivamente la riga successiva nel set di risultati. Se la riga successiva non è disponibile, il cursore chiuderà e non restituirà i dati se non specificato. Questo può essere un problema soprattutto dopo che il cursore ha raggiunto la fine del risultato.
Come soluzione, viene definito un gestore non trovato. Ciò specifica l'azione da intraprendere se la riga successiva non viene trovata.
La sintassi generale per la gestione degli errori quando si utilizza un cursore è:
Dichiarare Continua gestore non trovato set termini = true;Il valore terminale è una variabile utilizzata per specificare che il cursore ha raggiunto la fine del risultato. Il nome della variabile può essere qualsiasi nome finché si adatta alla convenzione di denominazione della variabile MySQL.
NOTA: Come tutte le variabili utilizzate in un cursore, deve essere definita prima che venga utilizzato nel cursore.
Esempio di utilizzo
Creiamo un cursore che raccoglie le e -mail dei clienti disponibili nella tabella dei clienti del database di esempio Sakila.
La risorsa per il download e l'installazione del database Sakila è di seguito:
https: // dev.mysql.com/doc/sakila/en/
Quanto segue illustra una procedura che utilizza un cursore per recuperare le e -mail:
Usa Sakila;Una volta eseguita la query, otterrai un output come mostrato di seguito:
Conclusione
In questo tutorial, abbiamo attraversato utilizzando i cursori MySQL per analizzare i dati memorizzati nel set di risultati. Considera la documentazione per padroneggiare come implementare i cursori.