Qui parleremo della struttura a blocchi Oracle PLSQL e dei tipi
Cos'è PL/SQL
PL/SQL è l'estensione proprietaria di Oracle per SQL che consente funzionalità di linguaggio procedurale. Offre tutte le funzionalità della moderna ingegneria del software come l'incapsulamento dei dati, la gestione delle eccezioni, il nascondiglio delle informazioni e l'orientamento agli oggetti
Perché usare PLSQL
1) Integrazione con strumenti di sviluppo come moduli Oracle, Reports
2) È possibile raggruppare più istruzioni in un singolo blocco plsql e inviarle al server Oracle con conseguente minor traffico di rete
3) Sviluppo del programma modulare:scomporre la logica/problema complesso in un insieme di moduli logici gestibili, ben definiti e implementarli utilizzando blocchi
4) Portabilità:poiché è nativo del server Oracle, può essere spostato facilmente
5) Fornisce strutture di controllo del linguaggio procedurale come if condition, looping
6) Ha la capacità di gestire errori e sollevare eccezioni in base ad esso
Struttura a blocchi PLSQL
Un blocco plsql viene creato in tre sezioni Dichiara, eseguibile ed eccezione.
DICHIARA(facoltativo) – questa sezione contiene variabili, costanti, cursori ed eccezioni definite dall'utente. BEGIN(Obbligatorio) ESEGUIBILE – questa sezione contiene tutte le istruzioni SQL. ECCEZIONE (opzionale)- questa sezione contiene i gestori degli errori.END(Obbligatorio); |
Quindi la dichiarazione e la sezione delle eccezioni sono facoltative.
Esempio di struttura a blocchi
DECLARE l_number NUMBER; BEGIN l_number := 1; Dbms_output.put_line(l_number); Exception When others then Dbms_output.put_line(‘Exception occurred’); END; /
Punti importanti da annotare
1) Tutte le variabili e le costanti sono definite nella sezione dichiara
2) Metti un punto e virgola; alla fine dell'istruzione sql o dell'istruzione di controllo plsql
3) In PL/SQL tutti gli errori vengono gestiti nel blocco Exception.
4) Begin e End sono istruzioni obbligatorie che indicano inizio e fine del blocco PL/SQL.
5) Le variabili e le costanti devono essere dichiarate prima di poter essere utilizzate.
6) I valori possono essere assegnati alle variabili direttamente utilizzando l'operatore di assegnazione “:=”, tramite un'istruzione SELECT … INTO o Quando utilizzato come parametro OUT o IN OUT da una procedura.
7) La parola chiave della sezione Declare, Begin , l'eccezione non è seguita da punto e virgola
8) End e tutte le altre istruzioni plsql richiedono un punto e virgola per terminare l'istruzione
Tipi di blocchi PLSQL
Anonimo :i blocchi anonimi sono blocchi senza nome. Sono dichiarati nel punto dell'applicazione in cui devono essere eseguiti
DECLARE l_number NUMBER; BEGIN l_number := 1; Dbms_output.put_line(l_number); Exception When others then Dbms_output.put_line(‘Exception occurred’); END; /
Funzione :Questi sono nomi di blocchi PLSQL che possono accettare parametri e calcolare alcune funzioni e restituirle. Può essere archiviato nel server o nell'applicazione Oracle
Syntax FUNCTION name [(parameter[, parameter, …])] RETURN datatype IS [local declarations] BEGIN executable statements [EXCEPTION exception handlers] END [name]; Example Create or replace function FUNC return number As l_number NUMBER; BEGIN Select count(*) into l_number from emp; return(l_number) END; /
Procedura :Questi sono i nomi dei blocchi PLSQL che possono accettare parametri ed elaborare alcune informazioni e possono o possono restituire valori. Può essere archiviato nel server o nell'applicazione Oracle
Syntax PROCEDURE name [(parameter[, parameter, …])] IS [local declarations] BEGIN executable statements [EXCEPTION exception handlers] END [name]; Example Create or replace procedure remove_emp (emp_id number) As BEGIN Delete from emp where employee_id=emp_id; END; /
Differenza tra funzione e procedura
Funzione | Procedura |
La funzione deve restituire un valore | Procedura non necessaria |
Sintassi | Sintassi |
Nome FUNZIONE (elenco di argomenti …..) Il tipo di dati restituito è | Nome PROCEDURA (lista parametri…..) |
Dichiarazioni di variabili locali | è |
Inizia | Dichiarazioni di variabili locali |
Istruzioni eseguibili | INIZIA |
Eccezione | Dichiarazioni eseguibili. |
gestori di esecuzione | Eccezione. |
Fine; | gestori di eccezioni |
fine; | |
La funzione può essere utilizzata in SQL con alcune restrizioni | La procedura non può essere chiamata direttamente da SQL. |
Sintassi e linee guida per i blocchi Oracle PLSQL
1) I caratteri e le date letterali devono essere racchiusi tra virgolette singole
2) Inserisci commenti su più righe tra /* e */
3) La maggior parte delle funzioni sql può essere utilizzata in PLSQL. Abbiamo la funzione char,date,number disponibile in PLSQL proprio come SQL
4) gruppo per funzione non sono disponibili in PLSQL. Può essere utilizzato solo nell'istruzione sql in PLSQL
5) Dovremmo usare un'adeguata indentazione per rendere leggibile il codice
6) Si consiglia di scrivere l'istruzione DML in maiuscolo, le parole chiave PLSQL, i tipi di dati in maiuscolo e inserire gli identificatori e il parametro in minuscolo per una migliore leggibilità e manutenzione
Link correlati
Documentazione Oracle PLSQL
25 domande più frequenti sull'intervista Oracle PlSQL
Oracle sql e plsql
come scrivere query sql