Blocco PL/SQL: struttura, sintassi ed esempio anonimo

โšก Riepilogo intelligente

Il blocco PL/SQL รจ l'unitร  base che raggruppa le istruzioni PL/SQL e SQL in modo che vengano eseguite insieme anzichรฉ riga per riga. Ogni blocco ha una sezione di dichiarazione, una di esecuzione e una di gestione delle eccezioni, e i blocchi possono essere anonimi o denominati.

  • ๐Ÿงฑ Idea centrale: Code รจ raggruppato in un blocco che viene eseguito come un tutt'uno, combinando la logica procedurale con SQL.
  • ๐Ÿ“ Sezione Dichiarazione: Facoltativo; dichiara variabili, cursori, eccezioni e sottoprogrammi utilizzati nel blocco.
  • โ–ถ ๏ธ Sezione Esecuzione: Obbligatorio; inizia con BEGIN e contiene almeno un'istruzione eseguibile.
  • ๐Ÿ›ก๏ธ Sezione eccezioni: Facoltativo; inizia con EXCEPTION e gestisce gli errori di runtime.
  • ๐Ÿท๏ธ Due tipi: I blocchi anonimi non hanno nome e vengono eseguiti una sola volta; i blocchi con nome vengono memorizzati come oggetti del database.
  • ๐Ÿ” Blocchi denominati: Le procedure e le funzioni sono blocchi denominati che possono essere richiamati ripetutamente.
  • โ›” Terminatore: END chiude il blocco, e una barra lo invia al compilatore.

Struttura e sintassi dei blocchi PL/SQL

Che cos'รจ un blocco PL/SQL?

In PL/SQL, il codice non viene eseguito in formato a riga singola; viene sempre eseguito in gruppoping il codice in un singolo elemento chiamato blocco. In questo tutorial, imparerai a conoscere questi blocchi.

I blocchi contengono sia istruzioni PL/SQL che istruzioni SQL. Tutte queste istruzioni vengono eseguite nel loro complesso, anzichรฉ una alla volta.

Struttura a blocchi

I blocchi PL/SQL hanno una struttura predefinita in cui il codice รจ raggruppato. Di seguito sono riportate le diverse sezioni di un blocco PL/SQL:

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

L'immagine seguente illustra le diverse sezioni dei blocchi PL/SQL e il loro ordine.

Sezioni e ordine dei blocchi PL/SQL

Sezione dichiarazioni

Questa รจ la prima sezione di un blocco PL/SQL ed รจ facoltativa. รˆ la sezione in cui vengono dichiarate le variabili, i cursori, le eccezioni, i sottoprogrammi, le istruzioni pragma e le collezioni necessarie al blocco. Alcune altre caratteristiche di questa parte:

  • Questa sezione รจ facoltativa e puรฒ essere omessa se non sono necessarie dichiarazioni.
  • Dovrebbe essere la prima sezione di un blocco PL/SQL, se presente.
  • Inizia con la parola chiave 'DECLARE' per i trigger e i blocchi anonimi. Per gli altri sottoprogrammi questa parola chiave non รจ presente; al suo posto, la parte che segue il nome del sottoprogramma indica la sezione di dichiarazione.
  • Deve sempre essere 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. Poichรฉ PL / SQL Si prevede la presenza di istruzioni eseguibili; questo blocco non puรฒ essere vuoto e deve contenere almeno una riga eseguibile valida. Alcune altre caratteristiche di questa parte:

  • Puรฒ contenere sia codice PL/SQL che codice SQL.
  • Puรฒ contenere al suo interno uno o piรน blocchi annidati.
  • Inizia con la parola chiave 'BEGIN'.
  • Deve essere seguito da 'END' oppure dalla sezione di gestione delle eccezioni, se presente.

Sezione Gestione delle eccezioni

Le eccezioni sono errori inevitabili che si verificano durante l'esecuzione e per gestirle Oracle Fornisce una sezione per la gestione delle eccezioni in blocchi. Questa sezione puรฒ contenere anche istruzioni PL/SQL ed รจ facoltativa.

  • Questa รจ la sezione in cui viene gestita un'eccezione generata nel blocco di esecuzione.
  • รˆ l'ultima parte del blocco PL/SQL.
  • Il controllo da questa sezione non puรฒ mai tornare al blocco di esecuzione.
  • Inizia con la parola chiave 'ECCEZIONE'.
  • Deve sempre essere seguito dalla parola chiave 'END'.

La parola chiave 'END' indica la fine del blocco PL/SQL.

Sintassi del blocco PL/SQL

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

Sintassi dei blocchi 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 deve sempre essere seguito da '/', che invia al compilatore informazioni sulla fine del blocco.

Tipi di blocchi PL/SQL

I blocchi PL/SQL sono principalmente di due tipi:

  1. Blocchi anonimi
  2. Blocchi con nome

Di seguito, prima della descrizione di ciascuno, i due vengono messi a confronto in un breve riepilogo.

Aspetto Blocco anonimo Blocco denominato
Ha un nome Non Si
Memorizzato nel database Non Sรฌ, come oggetto
Inizia con DICHIARARE o INIZIARE CREA
Riutilizzabile Solo nella stessa sessione Chiamabile in qualsiasi momento

Blocchi anonimi

I blocchi anonimi sono blocchi PL/SQL a cui non รจ stato assegnato alcun nome. Devono essere creati e utilizzati nella stessa sessione perchรฉ non vengono memorizzati sul server come oggetti del database.

Poichรฉ non vengono memorizzati nel database, non necessitano di una fase di compilazione separata. Vengono scritti ed eseguiti direttamente, e la compilazione e l'esecuzione avvengono in un unico processo. Alcune altre caratteristiche:

  • Questi blocchi non hanno un nome di riferimento.
  • Iniziano con la parola chiave 'DECLARE' o 'BEGIN'.
  • Poichรฉ non hanno un nome di riferimento, non possono essere memorizzati per un utilizzo successivo e devono essere creati ed eseguiti nella stessa sessione.
  • Possono richiamare altri blocchi con nome, ma non รจ possibile richiamare un blocco anonimo, poichรฉ non ha alcun riferimento.
  • Possono contenere un blocco annidato, denominato o anonimo, e possono anche essere annidati all'interno di qualsiasi altro blocco.
  • Possono essere presenti tutte e tre le sezioni, di cui la sezione di esecuzione รจ obbligatoria e le altre due sono facoltative.

Blocchi con nome

I blocchi denominati hanno un nome specifico e univoco. Vengono memorizzati come oggetti di database sul server, quindi possono essere richiamati o utilizzati finchรฉ sono presenti. Il processo di compilazione per i blocchi denominati avviene separatamente quando vengono creati come oggetti di database. Alcune caratteristiche aggiuntive:

  • Questi blocchi possono essere richiamati da altri blocchi.
  • La struttura del blocco รจ la stessa di un blocco anonimo, tranne per il fatto che non inizia mai con 'DECLARE'. Inizia invece con 'CREATE', che indica al compilatore di crearlo come oggetto del database.
  • Questi blocchi possono essere annidati all'interno di altri blocchi e possono a loro volta contenere blocchi annidati.
  • I blocchi con nome sono fondamentalmente di due tipi:
  1. Procedura
  2. Funzione

Puoi saperne di piรน su questi blocchi denominati nella guida a procedure e funzioni.

DOMANDE FREQUENTI

Solo la sezione di esecuzione, che inizia con BEGIN e termina con END. Le sezioni di dichiarazione e di gestione delle eccezioni sono facoltative e possono essere omesse se non necessarie.

Un blocco anonimo non ha un nome, non viene memorizzato e viene eseguito nella stessa sessione. Un blocco denominato, come una procedura o una funzione, viene memorizzato come oggetto del database e puรฒ essere richiamato ripetutamente.

In strumenti come SQL*Plus, la barra su una riga separata indica al compilatore che il blocco รจ completo e deve essere eseguito. Senza di essa, lo strumento continua ad attendere ulteriori input.

Sรฌ. L'IA puรฒ racchiudere la logica in un'intestazione CREATE PROCEDURE, aggiungere parametri e spostare le dichiarazioni nella posizione corretta. Testa il risultato, poichรฉ una versione memorizzata potrebbe richiedere modalitร  di parametri esplicite e gestione degli errori.

Sรฌ. Le sezioni di dichiarazione e di eccezione sono opzioni indipendenti. Un blocco puรฒ iniziare con BEGIN, saltare le dichiarazioni e includere comunque una sezione EXCEPTION prima di END per intercettare gli errori di runtime.

Riassumi questo post con: