Stored Procedure
Una stored procedure è un insieme di comandi SQL, o può essere descritta come un sottoprogramma con un nome specifico memorizzato nel database. Il processo eseguito da una stored procedure consiste nel ricevere parametri di input, restituire valori sotto forma di parametri di output al chiamante ed eseguire operazioni di manipolazione dei dati nel database, gestite da un programma come un trigger o un’altra stored procedure. L’uso delle stored procedure presenta diversi vantaggi:
- Migliora le prestazioni dell’applicazione, perché le stored procedure vengono eseguite più velocemente rispetto ai comandi SQL non compilati inviati dall’applicazione.
- Riduce il traffico di rete tra database e applicazione, poiché non è necessario inviare istruzioni SQL non compilate.
- Può essere utilizzato in modo ripetuto e trasparente su tutte le applicazioni.
Tuttavia, l’uso delle stored procedure presenta anche degli svantaggi:
- Non è possibile eseguire il debug.
- Aumenta il carico sull’hardware del server.
- La loro scrittura non è semplice e richiede conoscenze specifiche.
Sintassi delle Stored Procedure
La sintassi presente nelle stored procedure:
- Sintassi per scrivere una stored procedure
DELIMITER // CREATE PROCEDURE nome_procedura() BEGIN query sql END // DELIMITER ;
- Sintassi per chiamare una stored procedure
CALL nome_procedura()
- Sintassi per dichiarare una variabile in una stored procedure
DECLARE nome_variabile tipodato(lunghezza) DEFAULT valore;
- Sintassi della stored procedure con parametri
Esistono tre modalità per i parametri:
- IN, modalità predefinita in cui le modifiche all’interno della stored procedure non influenzano il parametro.
- OUT, modalità che modifica il valore del parametro e lo reinvia al chiamante.
- INOUT, modalità che combina IN e OUT.
Esempio di sintassi per definire una stored procedure con parametri:
DELIMITER // CREATE PROCEDURE nome_procedura([modalità] [parametro] [tipo_dato]) BEGIN query sql END // DELIMITER ;Esempio di sintassi per chiamare una stored procedure con parametri:
CALL nome_procedura([valore_parametro])
Cursor
Un cursor è un oggetto in un database utilizzato per gestire l’elaborazione di istruzioni SQL specifiche, o può essere descritto come una variabile che contiene il risultato di una query con più di una riga o record. Un cursor può iterare sul numero di righe in una tabella. Esistono diverse caratteristiche di un cursor:
- Non può essere aggiornato (sola lettura).
- Il cursor si muove solo in una direzione (non scorrevole).
- L’aggiornamento della tabella a cui il cursor fa riferimento non è consigliato perché potrebbe produrre risultati indesiderati (asensibile).
Sintassi delle Stored Procedure (per i Cursor)
La sintassi presente nei cursor:
Ci sono diversi passaggi nella creazione di un cursor:
- Declare, il passaggio per dichiarare il cursor, con la sintassi:
DECLARE nome_cursor CURSOR FOR istruzione_SELECT;
- Open, il passaggio per aprire o attivare il cursor, con la sintassi:
OPEN nome_cursor;
- Fetch, il passaggio per recuperare i dati dal cursor e quindi memorizzarli in una variabile, con la sintassi:
FETCH nome_cursor INTO lista_variabili
- Close, il passaggio per disattivare il cursor, con la sintassi:
CLOSE nome_cursor
Differenze tra Stored Procedure e Cursor
La differenza tra una stored procedure e un cursor è che una stored procedure contiene solo istruzioni di dichiarazione di MySQL, mentre un cursor contiene il risultato della query e funge anche da puntatore a tale risultato. Questo consente al cursor di eseguire operazioni complesse che non possono essere eseguite da una stored procedure. Un esempio è l’iterazione sui record.

