PL/SQLIn informatica il PL/SQL (Procedural Language/Structured Query Language) è un linguaggio di programmazione proprietario (per database di Oracle Corporation), procedurale, server-based, estensione dell'SQL.[1] Linguaggi simili al PL/SQL sono inclusi in altri database management system SQL. La sintassi è fortemente simile a quella del linguaggio di programmazione Ada. FunzionalitàIl PL/SQL supporta le variabili, condizioni, e gestisce le eccezioni. Le implementazioni dalla versione 8 di Oracle RDBMS hanno messo enfasi su l'object-orientation. Le funzioni SQL sottostanti sono come programmi dichiarativi. Il linguaggio SQL standard - diversamente da alcuni linguaggi di programmazione funzionali - non richiede implementazioni per convertire le chiamate ricorsive in salti.cSQL non fornisce prontamente i puntatori alla "prima riga" e al "resto della tabella", e non può eseguire facilmente costrutti come cicli. Il PL/SQL invece, come un linguaggio procedurale Turing-complete, permette agli sviluppatori dei database Oracle di interfacciarsi con il sottostante database in maniera imperativa. Gli statements SQL possono effettuare chiamate inline in modo esplicito alle funzioni PL/SQL, o possono lanciare triggers PL/SQL in caso di predefiniti eventi Data Manipulation Language (DML). Il PL/SQL ha diversi packages predefiniti, i più importanti sono:
In ogni release di Oracle RDBMS, la Oracle Corporation aggiunge packages contenenti nuove funzionalità. Struttura base del codiceI programmi PL/SQL sono strutturati a blocchi. I blocchi hanno questa forma generale: declare
-- Blocco di dichiarazione (opzionale)
begin
-- Codice da eseguire
exception
-- Gestione eccezioni(opzionale)
end;
/* Esempi di commenti
multilinea.. */
--commento su singola linea
La sezione Il blocco tra Le eccezioni possono essere di due tipi:
I programmatori possono lanciare le eccezioni definite dall'utente in modo esplicito con il commando RAISE <nome_dell_eccezione>
L'Oracle Corporation ha predefinito numerose eccezioni, ad esempio NO_DATA_FOUND, TOO_MANY_ROWS, ecc.
Ogni eccezione ha un SQL Error Number e un SQL Error Message associato. I programmatori possono accedere a questi dati con le funzioni VariabiliLa sezione Per esempio: declare
numero1 number(2);
numero2 number(2) := 17;
testo varchar2(12) := 'Ciao Mondo';
begin
select numero_civico into numero1 from indirizzi where nome='Mario';
end;
Il simbolo I tipi di dato più usati sono Variabili numerichenome_variabile number(P,[S]) := valore;
Per definire una variabile numerica il programmatore può usare il tipo Altri tipi numerici abbastanza comuni sono
Variabili testualinome_variabile varchar2(L) := 'Testo';
Per definire una variabile di tipo testuale, si può usare il tipo Altri tipi di variabile testuale includono:
Variabili booleanenome_variabile boolean := true;
Le variabili booleane possono avere i seguenti valori Variabili temporalinome_variabile date := '01-Gen-2005';
I programmatori possono definire una variabile di tipo data usando il tipo Il DBMS Oracle fornisce la funzione Ad esempio: to_date('31-12-2004','dd-mm-yyyy')
Per convertire le date in testo si può usare la funzione Tipi di dati per specifiche colonneNome_variabile nome_tabella.nome_colonna%type;
Questa sintassi definisce una variabile dello stesso tipo della colonna a cui si riferisce nella dichiarazione. Tipi dato definiti dall'utenteI programmatori possono definire tipi di dato con la seguente sintassi: type data_type is record(field_1 type_1 :=xyz, field_2 type_2 :=xyz, ..., field_n type_n :=xyz);
Per esempio: declare
type t_indirizzo is record(
nome indirizzi.nome%type,
via indirizzi.via%type,
numero_civico indirizzi.numero_civico%type,
codice_postale indirizzi.codice_postale%type);
v_indirizzo t_indirizzo;
begin
select nome, via, numero_civico, codice_postale into v_indirizzo from indirizzi where rownum = 1;
end;
Questo semplice programma definisce il proprio tipo di dato, Usando questi tipi di dato il programmatore ha definito una variabile chiamata I programmatori possono richiamare i singoli attributi, come in una struct, attraverso la dot-notation, ad esempio: v_indirizzo.via := 'Via Rossi';
Il PL/SQL permette anche di definire classi e instanziarle come oggetti, questo lo rende simile ai linguaggi di programmazione orientati agli oggetti. In PL/SQL una classe è chiamata Advance Data Type (ADT), è definita come un tipo SQL Oracle, diversamente dai tipi definiti dall'utente, permettendo di usarli sia in SQL che in PL/SQL. Il costruttore e i metodi sono scritti in PL/SQL. L'oggetto può essere salvato in una colonna di database Oracle. Linguaggi similiAnche altri DBMS hanno dei linguaggi associati. Sybase e il suo derivato Microsoft SQL Server hanno Transact-SQL, PostgreSQL ha PL/pgSQL (che cerca di emulare PL/SQL), DB2 include SQL Procedural Language[2] e MySQL ha una versione di SQL molto simile a PL/SQL. PL/SQL assomiglia da vicino al Pascal. La struttura a packages alla struttura base del Pascal, o alle unità Delphi. Note
Bibliografia
Collegamenti esterni
|