|
Home -> Manuali e Tutorials -> Guida MySQL Database -> Procedure
Scarica il tutorial | Stampa il tutorial | Cerca nel sito
Stored procedures e stored functions
Stored Procedure
Una stored procedure (o "procedura memorizzata") è un insieme di istruzioni SQL che vengono memorizzate nel server con un nome che le identifica; tale nome consente in seguito di rieseguire l'insieme di istruzioni facendo semplicemente riferimento ad esso. Vediamo una semplice stored procedure di esempio:
CREATE PROCEDURE nome_procedura (IN param1 INT, OUT param2 INT)
SELECT COUNT(*) INTO param2 FROM tabella
WHERE campo1 = param1;
|
La procedura è attribuita ad uno specifico database, esattamente come una tabella. Di conseguenza la procedura viene assegnata ad un database al momento della creazione. In fase di creazione, quindi, se indichiamo il nome della procedura senza specificare il database questa sarà assegnata al db attualmente in uso.
Ogni procedura può avere uno o più parametri, ciascuno dei quali è formato da un nome, un tipo di dato e l'indicazione se trattasi di parametro di input, di output o entrambi. Se manca l'indicazione, il parametro è considerato di input.
Il codice di sopra crea una procedura chiamata 'nome_procedura' nel database in uso; la procedura usa un parametro in input e uno in output, entrambi interi, ed effettua il conteggio delle righe in tabella in cui il valore di campo1 corrisponde al primo parametro; il risultato della query viene memorizzato nel secondo parametro attraverso la clausola INTO.
Per richiamare la procedura e visualizzare il risultato, dovete scrivere il seguente codice:
CALL nome_procedura (5, @a);
SELECT @a; |
Con l'istruzione CALL effettuiamo la chiamata della procedura, passando il valore 5 come parametro di input e la variabile @a come parametro di output, nel quale verrà memorizzato il risultato. La SELECT successiva visualizza il valore di tale variabile dopo l'esecuzione.
Nell'esempio appena visto la stored procedure conteneva una semplice SELECT; è possibile invece creare procedure che contengono sintassi complesse comprendenti più istruzioni: in pratica, dei veri e propri script, con la possibilità di controllare il flusso attraverso vari costrutti (IF, CASE, LOOP, WHILE, REPEAT, LEAVE, ITERATE).
Stored Function
Le stored functions sono simili alle stored procedures, ma hanno uno scopo più semplice, cioè quello di definire funzioni e devono sempre ritornare un valore. Esse restituiscono un valore, e non possono quindi restituire resultset, al contrario delle stored procedures. Nelle versioni di MySQL precedenti alla 5.0 esistevano le "user-defined functions", che venivano memorizzate esternamente al server. Ora queste funzioni sono ancora supportate, ma è sicuramente consigliabile utilizzare le nuove stored functions. Vediamo una semplice stored function di esempio:
CREATE FUNCTION func (n1 INT, n2 INT, n3 INT, n4 INT)
RETURNS INT
DETERMINISTIC
BEGIN
DECLARE avg INT;
SET avg = (n1+n2+n3*2+n4*4)/8;
RETURN avg;
END |
Questa funziona ritorna la media pesata di 4 numeri interi; i termini DECLARE e DETERMINISTIC servono rispettivamente per dichiarare una variabile e per specificare a MySQL che fornendo lo stesso input, il risultato non cambia.
Rimando alla guida ufficiale per maggiori dettagli ed esempi.
Torna su | Indice Guida | Pagina << 14 >>
|