Dal miglioramento di un DBMS, l'utilizzatore si aspetta in
particolare innovazioni riguardanti la velocità e la semplicità nell'allocare e poter manipolare dati; le
Stored Procedures vengono incontro a queste esigenze consentendo di interagire con i nostri archivi attraverso
istruzioni pił brevi rispetto a quelle necessarie per le versioni precedenti di MySQL e, elemento altrettanto
importante, esse prevedono un alto grado di indipendenza dalla piattaforma utilizzata con evidenti vantaggi in materia di
portabilità.
Alla base delle Stored Procedures vi è un ragionamento tanto semplice quanto
efficace: spostare la logica su cui si fondano le interrogazioni dalle applicazioni che fanno uso delle basi di dati ai
database stessi.
Una Stored Procedure è una procedura, che potremmo definire pił propriamente con
il termine sotto-programma, allocata all'interno di una base di dati. Essa consente di stabilire a priori delle
routines da richiamare ogni volta che si dovesse presentare l'esigenza di una loro azione sui dati; le istruzioni da
digitare divengono quindi pił brevi, in quanto non abbiamo bisogno di riscrivere una determinata istruzione quando ne abbiamo
bisogno, basterà invece richiamare la procedura ad essa associata, la chiamata ne imporrà l'esecuzione.
Vi sono principalmente due tipi di Stored Procedures: quelle procedure che vengono richiamate
dall'utilizzatore e quelle funzioni che restituiscono valori utilizzati in precedenti dichiarazioni SQL.
Chi ha pratica di linguaggi di scripting o pił in generale di programmazione, avrà già notato alcune
importanti affinità, in effetti, le Stored Procedures richiamano numerosi costrutti utilizzati nella
digitazione dei listati: variabili per cui si dovrà dichiarare il tipo di dato, valori in input e in output, funzioni
personalizzate, istruzioni condizionali (if, else ..), istruzioni di iterazione (cicli,
loop...).
Presentiamo ora un breve esempio che illustra la creazione di una procedura in sede di
digitazione dei comandi:
CREATE PROCEDURE procedura (IN parametro INTEGER)Niente di particolarmente complicato, anche coloro che non hanno pratica delle Stored Procedures capiranno facilmente la semplice logica su chi si basa il procedimento appena esposto.
BEGIN
DECLARE var VARCHAR(255);
IF parametero = 20 THEN
SET var = 'rosso';
ELSE SET var = 'giallo';
END IF;
INSERT INTO tabella VALUES (var);
END