Homepage Site Map


   
PROGRAMMAZIONE
   FARE WEB
   HTML
   CSS
   PHP
   MySQL
   XML - XSL
GRAFICA
   PAINT SHOP
   ANIMATION SHOP
   SWISH
   SWISHMAX
SCRIPT
   JAVASCRIPT
   PHP
   APPLET JAVA
   CSS GENERATOR
   WEB TOOLS
DOWNLOAD
   FONTS
   ICONE E AVATAR
   SMILES
   GIF ANIMATE
   CURSORI
   CALENDARI
   KAOANI
   BASI BANNER
   SCREENMATES
   MEEGOS
   GIOCHI
   VIDEO E PPS
ARTICOLI
   ARTICOLI
   GUADAGNA SITO
LINKS
   LINK TO ME
   VOTAMI
   SCAMBIO LINK
   SCAMBIO BANNER



 
  

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 >>    



 


Cynegi Network

Vai al W3C CSS Validator toolkit.
Realizzato con PHP. Vai al sito ufficiale del PHP.
Testato anche con Mozilla Firefox. Vai al sito ufficiale.

Home     Contacts     Forum     FAQ     Newsletter     Mappa     Cerca     Link to me

  Vedi gli RSS del sito.      

-->  [Il tuo link qui]