Procedure e stored procedure II-AD12

Stored procedure

Abbiamo visto come creare una semplice Procedure, (nell’articolo precedente) vediamo ora come utilizzarla. Per richiamare una Stored Procedures si utilizza lo statement CALL seguito dal nome della procedura, ad esempio:

CALL TuttiGliStudenti()

Così, questa linea di codice restituirà il recordset generato dalla nostra procedura che, come abbiamo visto, effettua una semplice query di SELECT all’interno della tabella “Studenti” del nostro database.

Utilizzo di parametri all’interno di una Stored Procedure

Nella definizione di una Procedure in MySQL è anche possibile prevedere il passaggio di parametri. Questi possono essere di tre tipi:

Vediamo ora un semplicissimo esempio di creazione di una procedura in MySQL avente un parametro IN, partendo dall’esempio visto in precedenza:

DELIMITER **;
CREATE PROCEDURE StudentiNellaProvincia(IN prov VARCHAR(255))
BEGIN
SELECT * FROM Studenti  WHERE provincia = prov;
END **
DELIMITER ;

Abbiamo creato dunque una procedura che – attraverso un parametro in ingresso – seleziona solo gli studenti residenti in una data provincia. Per introdurre il parametro in ingresso abbiamo utilizzato, tra le parentesi tonde, questa sintasi:

IN nome_parametro TIPO DI DATO

Vediamo ora come implementare una Stored Procedure con un parametro in uscita. Questo l’esempio:

DELIMITER **;
CREATE PROCEDURE QuantiStudenti(OUT totale INT)
BEGIN
SELECT COUNT(*) INTO totale FROM Studenti;
END **
DELIMITER ;

In questo caso, per richiamare la nostra procedura, utilizzeremo il seguente codice:

CALL QuantiStudenti(@tot);
SELECT @tot;

In pratica abbiamo definito, come argomento di ritorno, una variabile @tot e, successivamente, ne abbiamo estratto il valore mediante SELECT.