Claudiogarau.it :: Tutorials & Scripts, PHP, Linux and more.

Home ~ Php :: Le novità di MySQL 5: I Cursors e le Transactions :: Indice Php

Le novità di MySQL 5: I Cursors e le Transactions

Categoria: Php Inserito il: 05-12-2005 Stampa (6230 click)

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.

Cerca nel sito
Per sito
Sviluppatore di applicazioni Web con competenze evolute nella progettazione delle basi di dati, autore per alcune delle pił importanti testate on line dedicate alla manualistica tecnica (HTML.it, MrWebmaster.it, Edit) e consulente per l'e-learning.
Tutte le categorie
Tutorial Random
Standard di input e output in UNIX
All'interno di un sistema UNIX sono presenti e sempre disponibili tre file legati alle funzioni di raccolta degli input e... Leggi l'articolo
Corsi online per sviluppatori
Corsi per Webmaster, Web Designer, Programmatori, Grafici e Sistemisti