logo

Introduzione a PL/SQL

PL/SQL è un linguaggio strutturato a blocchi che consente agli sviluppatori di combinare la potenza di SQL con istruzioni procedurali. Tutte le istruzioni di un blocco vengono passate al motore Oracle tutte in una volta, il che aumenta la velocità di elaborazione e diminuisce il traffico.

Nozioni di base su PL/SQL

  • •PL/SQL sta per estensioni del linguaggio procedurale allo Structured Query Language (SQL).
  • PL/SQL è una combinazione di SQL con le funzionalità procedurali dei linguaggi di programmazione.
  • Oracle utilizza un motore PL/SQL per elaborare le istruzioni PL/SQL.
  • PL/SQL include elementi del linguaggio procedurale come condizioni e cicli. Consente la dichiarazione di costanti e variabili, procedure e funzioni, tipi e variabili di tali tipi e trigger.

Svantaggi di SQL:



  • SQL non fornisce ai programmatori una tecnica di controllo delle condizioni, looping e ramificazione.
  • Le istruzioni SQL vengono passate al motore Oracle una alla volta, il che aumenta il traffico e diminuisce la velocità.
  • SQL non dispone di funzionalità di controllo degli errori durante la manipolazione dei dati.

Caratteristiche di PL/SQL:

  1. PL/SQL è fondamentalmente un linguaggio procedurale, che fornisce le funzionalità del processo decisionale, dell'iterazione e molte altre caratteristiche dei linguaggi di programmazione procedurali.
  2. PL/SQL può eseguire un numero di query in un blocco utilizzando un singolo comando.
  3. È possibile creare un'unità PL/SQL come procedure, funzioni, pacchetti, trigger e tipi, che vengono archiviati nel database per il riutilizzo da parte delle applicazioni.
  4. PL/SQL fornisce una funzionalità per gestire l'eccezione che si verifica nel blocco PL/SQL noto come blocco di gestione delle eccezioni.
  5. Le applicazioni scritte in PL/SQL sono trasferibili sull'hardware del computer o sul sistema operativo in cui Oracle è operativo.
  6. PL/SQL Offre un controllo completo degli errori.

Differenze tra SQL e PL/SQL:

rhel contro centos
SQL PL/SQL
SQL è una singola query utilizzata per eseguire operazioni DML e DDL. PL/SQL è un blocco di codici utilizzato per scrivere l'intero programma: blocchi/procedura/funzione, ecc.
È dichiarativo, ovvero definisce cosa deve essere fatto, piuttosto che come le cose devono essere fatte. PL/SQL è procedurale che definisce come devono essere fatte le cose.
Esegui come una singola istruzione. Esegui come un intero blocco.
Utilizzato principalmente per manipolare i dati. Utilizzato principalmente per creare un'applicazione.
Non può contenere codice PL/SQL. È un'estensione di SQL, quindi può contenere SQL al suo interno.

Struttura del blocco PL/SQL:



PL/SQL estende SQL aggiungendo costrutti presenti nei linguaggi procedurali, risultando in un linguaggio strutturale più potente di SQL. L'unità di base in PL/SQL è un blocco. Tutti i programmi PL/SQL sono costituiti da blocchi che possono essere annidati uno nell'altro.

In genere, ciascun blocco esegue un'azione logica nel programma. Un blocco ha la seguente struttura:

 DECLARE declaration statements; BEGIN executable statements EXCEPTIONS exception handling statements END;>
  • La sezione Dichiara inizia con DICHIARARE parola chiave in cui è possibile dichiarare variabili, costanti, record come cursori che memorizzano temporaneamente i dati. Consiste fondamentalmente nella definizione di identificatori PL/SQL. Questa parte del codice è facoltativa.
  • La sezione Esecuzione inizia con INIZIO e termina con FINE parola chiave.Questa è una sezione obbligatoria e qui viene scritta la logica del programma per eseguire qualsiasi attività come loop e istruzioni condizionali. Supporta tutto DML comandi, DDL comandi e funzioni integrate SQL*PLUS.
  • La sezione delle eccezioni inizia con ECCEZIONE parola chiave.Questa sezione è facoltativa e contiene istruzioni che vengono eseguite quando si verifica un errore di runtime. Eventuali eccezioni possono essere gestite in questa sezione.

Identificatori PL/SQL

Esistono diversi identificatori PL/SQL come variabili, costanti, procedure, cursori, trigger, ecc.



  1. Variabili : Come molti altri linguaggi di programmazione, le variabili in PL/SQL devono essere dichiarate prima del loro utilizzo. Dovrebbero avere anche un nome e un tipo di dati validi. Sintassi per la dichiarazione delle variabili:
variable_name datatype [NOT NULL := value ];>
  1. Esempio per mostrare come dichiarare le variabili in PL/SQL:

C




SQL>IMPOSTA USCITA SERVER SU;> SQL>DICHIARARE> >var1 INTEGER;> >var2 REAL;> >var3 varchar2(20) ;> BEGIN> >null;> END;> />

stringa in char java
>

>

  1. Produzione:
PL/SQL procedure successfully completed.>
  1. Spiegazione:
    • IMPOSTA L'USCITA DEL SERVER SU ON : Viene utilizzato per visualizzare il buffer utilizzato da dbms_output.
    • var1 INTERO: È la dichiarazione della variabile, denominata var1 che è di tipo intero. Esistono molti altri tipi di dati che possono essere utilizzati come float, int, real, smallint, long ecc. Supporta anche variabili utilizzate in SQL come NUMBER(prec, scale), varchar, varchar2 ecc.
    • Procedura PL/SQL completata con successo.: Viene visualizzato quando il codice viene compilato ed eseguito correttamente.
    • Barra (/) dopo FINE;: La barra (/) indica a SQL*Plus di eseguire il blocco.
    • Operatore di assegnazione (:=) : Viene utilizzato per assegnare un valore a una variabile.
  2. Visualizzazione dell'output : gli output vengono visualizzati utilizzando DBMS_OUTPUT che è un pacchetto integrato che consente all'utente di visualizzare output, informazioni di debug e inviare messaggi da blocchi, sottoprogrammi, pacchetti e trigger PL/SQL. Vediamo un esempio per vedere come visualizzare un messaggio utilizzando PL/SQL:

C




SQL>IMPOSTA USCITA SERVER SU;> SQL>DICHIARARE> >var varchar2(40) :=>'I love GeeksForGeeks'> ;> >BEGIN> >dbms_output.put_line(var);> >END;> >/>

>

cosa sono i selettori nei css
>

  1. Produzione:
I love GeeksForGeeks PL/SQL procedure successfully completed.>
  1. Spiegazione:
    • dbms_output.put_line : Questo comando viene utilizzato per indirizzare l'output PL/SQL su uno schermo.
  2. Utilizzo dei commenti : Come in molti altri linguaggi di programmazione, anche in PL/SQL è possibile inserire commenti nel codice, senza alcun effetto sul codice. Esistono due sintassi per creare commenti in PL/SQL:
    • Commento a riga singola: Per creare un commento a riga singola, il simbolo– –si usa.
    • Commento su più righe: Per creare commenti che si estendono su più righe, il simbolo/*E*/si usa.
  3. Prendendo input dall'utente : Proprio come in altri linguaggi di programmazione, anche in PL/SQL possiamo prendere l'input dell'utente e memorizzarlo in una variabile. Vediamo un esempio per mostrare come ricevere input dagli utenti in PL/SQL:

C




SQL>IMPOSTA USCITA SERVER SU;> SQL>DICHIARARE> >-- taking input>for> variable a> >a number := &a;> > >-- taking input>for> variable b> >b varchar2(30) := &b;> >BEGIN> >null;> >END;> >/>

>

>

  1. Produzione:
Enter value for a: 24 old 2: a number := &a; new 2: a number := 24; Enter value for b: 'GeeksForGeeks' old 3: b varchar2(30) := &b; new 3: b varchar2(30) := 'GeeksForGeeks'; PL/SQL procedure successfully completed.>
  1. (***) Vediamo un esempio su PL/SQL per dimostrare tutti i concetti di cui sopra in un unico blocco di codice.

C




--PL/SQL code to print sum of two numbers taken from the user.> SQL>IMPOSTA USCITA SERVER SU;> SQL>DICHIARARE> > >-- taking input>for> variable a> >a integer := &a ;> > >-- taking input>for> variable b> >b integer := &b ;> >c integer ;> >BEGIN> >c := a + b ;> >dbms_output.put_line(>'Sum of '>||a||>' and '>||b||>' is = '>||c);> >END;> >/>

stdin in c
>

>

Enter value for a: 2 Enter value for b: 3 Sum of 2 and 3 is = 5 PL/SQL procedure successfully completed.>

Ambiente di esecuzione PL/SQL:

Il motore PL/SQL risiede nel motore Oracle. Il motore Oracle può elaborare non solo una singola istruzione SQL ma anche blocchi di molte istruzioni. La chiamata al motore Oracle deve essere effettuata solo una volta per eseguire un numero qualsiasi di istruzioni SQL se queste istruzioni SQL sono raggruppati all'interno di un blocco PL/SQL.