Una stored procedure è un programma scritto in SQL o in altri linguaggi, mantenuto nel database stesso, archiviato nel cosiddetto database data dictionary. Spesso è scritta in versioni proprietarie di SQL, che sono dei veri e propri linguaggi strutturati, come il PL/pgSQL di PostgreSQL o il PL/SQL di Oracle, all'interno dei quali è possibile scrivere codice SQL. Generalizzando, a seconda delle loro caratteristiche si distinguono diversi tipi di sottoprogrammi:

Funzioni restituiscono un singolo valore oltre ad accettare parametri di ingresso e/o uscita
Procedure non restituiscono valori ma accettano parametri di ingresso e/o uscita
Trigger sono attivati da eventi

Generalmente il DBMS compila le stored procedure, il che significa che le ottimizza e stabilisce il piano di esecuzione delle query.

Alcuni DBMS consentono di criptare le stored procedure. Questa pratica viene usata dai produttori di software per fare in modo che il cliente non possa leggerle. Questo modo di distribuire il software è detto closed source, il cui codice cioè deve restare segreto per evitare che venga studiato o modificato.

Vantaggi e svantaggi

[modifica | modifica wikitesto]

I principali vantaggi che derivano dall'utilizzo delle stored procedure sono i seguenti:

Gli svantaggi principali sono invece i seguenti:

Linguaggi

[modifica | modifica wikitesto]

I linguaggi utilizzabili per la scrittura delle stored procedure sono molti e dipendono dal DBMS che si utilizza. I più diffusi sono sicuramente Java e C/C++. I DBMS offrono anche versioni strutturate di SQL in modo che possa essere utilizzato per scrivere procedure che contengano condizioni e cicli. I più famosi sono:

Estensioni procedurali di SQL

[modifica | modifica wikitesto]

Sebbene lo standard SQL:2003 preveda diversi costrutti che fanno di SQL un linguaggio procedurale, i DBMS che implementano le Stored Procedure tendono a utilizzare estensioni specifiche, o a basarsi sulle implementazioni più diffuse anziché sullo standard. A ciò si aggiunge il fatto che i DBMS più leggeri non implementano affatto le Stored Procedure o altri tipi di routine. Per questi motivi, i costrutti procedurali sono quella parte dell'SQL più soggetta a variazioni quando si passa da un dialetto all'altro.

Le estensioni procedurali di SQL comprendono:

Voci correlate

[modifica | modifica wikitesto]

Collegamenti esterni

[modifica | modifica wikitesto]
  Portale Informatica: accedi alle voci di Wikipedia che trattano di informatica