I Cursors rappresentano dei puntatori diretti ai recordset di
determinate interrogazioni; attraverso di essi possiamo accedere ai recordset e assegnare i valori dei campi a
variabili.
Un esempio pratico chiarirà il concetto appena espresso:
CREATE PROCEDURE get_cursor (IN dato_1
INT, OUT dato_2 CHAR(5))
BEGIN
DECLARE var_1 CHAR(5);
DECLARE cursor_1 CURSOR FOR SELECT
var FROM
tabella WHERE id = dato_1;
OPEN cursor_1;
FETCH cursor_1 INTO var_1;
CLOSE cursor_1;
SET dato_2 = var_1;
END;
Innanzitutto, viene dichiarata la procedura ("CREATE PROCEDURE get_cursor(IN
dato_1 INT, OUT dato_2 CHAR(5))") con la quale stabiliamo due valori (uno di input e un secondo di output) e ne
attribuiamo il tipo di dato, essi verranno coinvolti dall'azione del
Cursor.
In secondo luogo dichiariamo
una variabile ("var_1") e ne definiamo il tipo di dato; nel nostro caso sarà una stringa.
Quindi,
introduciamo il
Cursor ("cursor_1") a cui dobbiamo associare l'azione per cui viene dichiarato
("CURSOR FOR SELECT var FROM tabella WHERE id = dato_1;").
Il
Cursor viene aperto ("OPEN
cursor_1;") e svolge la sua azione sulla variabile ("FETCH cursor_1 INTO var_1;"), dopo di chè viene
chiuso e la variabile viene settata con il valore di output.
Le
Transactions sono disponibili soltato per
tabelle
InnoDB, una
Transaction
consente di eseguire query multiple solo nel caso in cui tutte hanno esito positivo, diversamente gli errori saranno
gestiti in modo da non compromettere la correttezza dei dati.
Proponiamo di seguito un breve esempio riguardante
l'azione svolta da una
Transaction:
START TRANSACTION;
SELECT @dato_1:=SUM(prezzo) FROM tabella_1 WHERE
id=1;
UPDATE tabella_2 SET prezzo=@dato_1 WHERE id=1;
COMMIT;
Nell'esempio viene inizializzata la
Transaction ("START TRANSACTION;"); la prima query proposta è una
SELECT da una prima tabella
operata su un determinato dato ("SELECT @dato_1:=SUM(prezzo) FROM tabella_1 WHERE id=1;").
La seconda
query impone un aggiornamento su una seconda tabella utilizzando il dato precedentemente estratto ("UPDATE tabella_2 SET
prezzo=@dato_1 WHERE id=1;").
Infine viene rilasciata la
Transaction tramite la clausola
"COMMIT".
Attenzione: questo articolo è stato concesso in esclusiva
per la pubblicazione a
Mrwebmaster.it; ne è vietata la
riproduzione, anche parziale, senza l'esplicito consenso dell'autore e della redazione di
Mrwebmaster.it.