Blocco PL/SQL: STRUTTURA, sintassi, esempio ANONIMO

Cos'è il blocco PL/SQL?

In PL/SQL, il codice non viene eseguito in formato a riga singola, ma viene sempre eseguito raggruppando il codice in un unico elemento chiamato Blocchi. In questo tutorial imparerai a conoscere questi blocchi.

I blocchi contengono sia istruzioni PL/SQL che SQL. Tutte queste istruzioni verranno eseguite nel loro insieme anziché eseguire una singola istruzione alla volta.

Struttura a blocchi

I blocchi PL/SQL hanno una struttura predefinita in cui deve essere raggruppato il codice. Di seguito sono riportate diverse sezioni di blocchi PL/SQL.

  1. Sezione dichiarazioni
  2. Sezione esecuzione
  3. Sezione Gestione delle eccezioni

L'immagine seguente illustra i diversi blocchi PL/SQL e il relativo ordine di sezione.

Struttura a blocchi

Sezione dichiarazioni

Questa è la prima sezione dei blocchi PL/SQL. Questa sezione è una parte facoltativa. Questa è la sezione in cui verranno dichiarate le dichiarazioni di variabili, cursori, eccezioni, sottoprogrammi, istruzioni pragma e raccolte necessarie nel blocco. Di seguito sono riportate alcune altre caratteristiche di questa parte.

  • Questa particolare sezione è facoltativa e può essere saltata se non sono necessarie dichiarazioni.
  • Questa dovrebbe essere la prima sezione di un blocco PL/SQL, se presente.
  • Questa sezione inizia con la parola chiave "DECLARE" per trigger e blocco anonimo. Per gli altri sottoprogrammi questa parola chiave non sarà presente. Invece, la parte dopo la definizione del nome del sottoprogramma contrassegna la sezione di dichiarazione.
  • Questa sezione dovrebbe essere sempre seguita dalla sezione di esecuzione.

Sezione Esecuzione

La parte di esecuzione è la parte principale e obbligatoria che esegue effettivamente il codice scritto al suo interno. Dal momento che PL / SQL si aspetta le istruzioni eseguibili da questo blocco questo non può essere un blocco vuoto, cioè dovrebbe contenere almeno una riga di codice eseguibile valida. Di seguito sono riportate alcune altre caratteristiche di questa parte.

  • Può contenere sia codice PL/SQL che codice SQL.
  • Questo può contenere uno o più blocchi al suo interno come blocco nidificato.
  • Questa sezione inizia con la parola chiave "BEGIN".
  • Questa sezione deve essere seguita da "FINE" o dalla sezione Gestione delle eccezioni (se presente)

Sezione Gestione delle eccezioni

L'eccezione è inevitabile nel programma che si verifica in fase di esecuzione e per gestirla Oracle ha fornito una sezione di gestione delle eccezioni in blocchi. Questa sezione può contenere anche istruzioni PL/SQL. Questa è una sezione facoltativa dei blocchi PL/SQL.

  • Questa è la sezione in cui viene gestita l'eccezione sollevata nel blocco di esecuzione.
  • Questa sezione è l'ultima parte del blocco PL/SQL.
  • Il controllo da questa sezione non può mai tornare al blocco di esecuzione.
  • Questa sezione inizia con la parola chiave "ECCEZIONE".
  • Questa sezione deve essere sempre seguita dalla parola chiave "FINE".

La parola chiave "END" segna la fine del blocco PL/SQL.

Sintassi del blocco PL/SQL

Di seguito è riportata la sintassi della struttura a blocchi PL/SQL.

Sintassi del blocco PL/SQL

DECLARE --optional
    <declarations>

BEGIN   --mandatory
    <executable statements. At least one executable statement is mandatory>

EXCEPTION --optional 
    <exception handles>

END;   --mandatory
/

Nota: Un blocco dovrebbe essere sempre seguito da "/" che invia l'informazione al compilatore sulla fine del blocco.

Tipi di blocco PL/SQL

I blocchi PL/SQL sono principalmente di due tipi.

  1. Blocchi anonimi
  2. Blocchi con nome

Blocchi anonimi

I blocchi anonimi sono blocchi PL/SQL a cui non è assegnato alcun nome. Devono essere creati e utilizzati nella stessa sessione perché non verranno archiviati nel server come oggetti di database.

Poiché non è necessario memorizzarli nel database, non necessitano di passaggi di compilazione. Vengono scritti ed eseguiti direttamente e la compilazione e l'esecuzione avvengono in un unico processo.

Di seguito sono riportate alcune altre caratteristiche dei blocchi anonimi.

  • Per questi blocchi non è specificato alcun nome di riferimento.
  • Questi blocchi iniziano con la parola chiave "DECLARE" o "BEGIN".
  • Poiché questi blocchi non hanno alcun nome di riferimento, non possono essere memorizzati per scopi successivi. Devono essere creati ed eseguiti nella stessa sessione.
  • Possono chiamare gli altri blocchi con nome, ma la chiamata al blocco anonimo non è possibile poiché non ha alcun riferimento.
  • Può contenere blocchi nidificati che possono essere nominati o anonimi. Può anche essere annidato in qualsiasi blocco.
  • Questi blocchi possono avere tutte e tre le sezioni del blocco, in cui la sezione di esecuzione è obbligatoria, le altre due sezioni sono facoltative.

Blocchi con nome

I blocchi denominati hanno un nome specifico e univoco. Sono archiviati come oggetti di database nel server. Poiché sono disponibili come oggetti di database, è possibile farvi riferimento o utilizzarli finché sono presenti sul server. Il processo di compilazione per i blocchi con nome avviene separatamente durante la loro creazione come oggetti di database.

Di seguito sono riportate alcune altre caratteristiche dei blocchi con nome.

  • Questi blocchi possono essere richiamati da altri blocchi.
  • La struttura del blocco è la stessa di un blocco anonimo, tranne che non inizierà mai con la parola chiave "DECLARE". Invece, inizierà con la parola chiave "CREATE" che indica al compilatore di crearlo come oggetto di database.
  • Questi blocchi possono essere annidati all'interno di altri blocchi. Può anche contenere blocchi nidificati.
  • I blocchi con nome sono fondamentalmente di due tipi:
  1. Procedura
  2. Funzione

Approfondiremo la conoscenza di questi blocchi denominati negli argomenti "Procedura" e "Funzione" del tutorial successivo.

Sommario

Dopo questo tutorial, dovresti essere a conoscenza dei blocchi PL/SQL e dei suoi tipi, delle diverse sezioni di blocchi e dei loro utilizzi. La descrizione dettagliata dei blocchi PL/SQL denominati sarà trattata nel tutorial successivo.