Stored procedure

Una stored procedure (lett. "procedura memorizzata" in italiano), nota anche semplicemente come procedura o funzione, è un programma conservato all'interno di un database ed eseguito dal DBMS associato. Vengono principalmente utilizzate come mezzo per massimizzare il riuso di codice relativo a operazioni di amministrazione e manipolazione dei dati, oltre che indebolire l'accoppiamento tra una database e le applicazioni che lo utilizzano, risultando in un sistema complessivamente più robusto.

La maggior parte dei DBMS supporta l'uso di diversi linguaggi di programmazione per la scrittura delle procedure. A parte SQL e dialetti proprietari, essi possono essere divisi in due categorie: linguaggi general-purpose e linguaggi procedurali dedicati.

Alcuni DBMS[quali?] 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.

Tipologie

Generalizzando, a seconda delle loro caratteristiche si distinguono diversi tipi di procedure:

Funzionirestituiscono un singolo valore oltre ad accettare parametri di ingresso e/o uscita
Procedurenon restituiscono valori ma accettano parametri di ingresso e/o uscita
Triggersono attivati da eventi

Linguaggi

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

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:

Vantaggi e svantaggi

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

Gli svantaggi principali sono invece i seguenti:

Note

  1. ↑ (EN) User-Defined Procedures, su postgresql.org. URL consultato il 3 luglio 2024.
  2. 1 2 (EN) User-Defined Functions, su postgresql.org. URL consultato il 3 luglio 2024.
  3. ↑ Atzeni 2018.
  4. ↑ (EN) C-Language Functions, su postgresql.org. URL consultato il 3 luglio 2024.
  5. ↑ (EN) Procedural languages, su postgresql.org. URL consultato il 3 luglio 2024.

Bibliografia

Voci correlate

Collegamenti esterni

  Portale Informatica: accedi alle voci di Wikipedia che trattano di informatica