Questo sito contribuisce alla audience di

Il linguaggio pl/sql - settima parte

I Package

Un package e’ una raccolta di oggetti pl/sql come funzioni, procedure, variabili etc.

E’ diviso in due parti che vengono create separatamente: le specifiche (specification) e il corpo (body).

Le specifiche contengono la parte pubblica del package, quindi accessibile a tutte le applicazioni. Il body, invece, nasconde la parte implementativa, le variabili e gli oggetti privati.

Per fare riferimento ad un oggetto (pubblico) che si trova all’interno del package e’ necessario anteporre al nome dell’oggetto quello del package, separati da un punto, ad esempio per richiamare la procedura proc dichiarata nelle specifiche del package pack si scrivera’: pack.proc; un’altra procedura del package puo’ far riferimento direttamente agli oggetti dello stesso, anche queli definiti solo nel body e quindi privati, semplicemente attraverso il loro nome.

Prima di entrare nel dettaglio della definizione di un package, vediamo quali sono i vantaggi offerti dal loro utilizzo:

Modularita’: possibilita’ di raggruppare oggetti in relazione fra loro, rendendo cosi’ piu’ facile la lettura e la gestione del codice.
Information Hiding: possibilita’ di distinguere cio’ che e’ pubblico (specification) e cio’ che e’ privato (body). In particolare la parte implementativa, risiedendo nel body, resta nascosta al resto dell’applicazione.
Progettazione: e’ possibile definire e compilare le specifiche anche in assenza del body. Cio’ e’ utilie in fase di progettazione, in quanto altri oggetti che referenziano il package possono essere compilati senza errore, permettendo cosi’ di posticipare l’implemetazione del body.
Condivisione: i valori delle variabili e dei cursori definti nel package sono persistenti per tutta la durata della sessione. In questo modo e’ possibile condividere tali valori.
Performance: la prima volta che viene richiamato un oggetto, l’intero package viene caricato in memoria, le chiamate successive, quindi, non causeranno accessi al disco, velocizzando cosi’ l’esecuzione. Inoltre Oracle accede agli oggetti di un package in modo piu’ efficiente che se fossero definiti separatamente, ad esempio, se si modifica il corpo di un package non e’ necessario ricompilare tutti gli elementi che lo richiamano (che infatti fanno riferimento alle specifiche) come invece accade se si modifica una funzione singola.

continua…

Le categorie della guida