PL/SQL: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Mkr77 (discussione | contributi)
Nessun oggetto della modifica
Riga 1:
Il '''PL/SQL (Procedural <nowiki>Language/Structured</nowiki> Query Language)''' è un [[linguaggio di programmazione]] proprietario per database, [[Oracle Corporation]], procedurale, server-based ed estensione dell'[[SQL]].
Linguaggi simili al PL/SQL sono inclusi in altri [[database management system]] [[SQL]]. La sua [[sintassi]] è fortemente simile a quella del linguaggio di programmazione [[ADA]].
 
 
==Funzionalità==
 
Il PL/SQL supporta le [[variabile|variabili]], [[condizioni]], e gestisce le [[eccezioni]]. Le implementazioni dalla versione 8 di [[Oracle]] [[RDBMS]] hanno messo enfasi su l'[[object orientation | object-orientation]].
 
Le funzioni [[SQL]] sottostanti sono come programmi dichiarativi.
L'[[SQL]] standard &mdash;diversamente da alcuni linguaggi di programmazione funzionali&mdash; non richiede implementazioni per convertire le chiamate ricorsive in salti.
L'[[SQL]] 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, com 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 in line in modo esplicito alle funzioni PL/SQL, o possono lanciare triggers PL/SQL in caso di predefiniti eventi [[DML]].
 
Dato che i programmatori possono incorporare statements [[SQL]] [[DML]] nel PL/SQL (una definizione di cursore, per esempio, o usare la sintassi SELECT .. INTO), statements [[DDL]] come CREATE TABLE-DROP INDEX etc.. è richiesto l'uso dell' "SQL Dinamico". Le prime versioni di Oracle richiedevano l'uso di un clomplesso package per l'[[SQL ]]dinamico (<code>DBMS_SQL</code>) nel quale il sistema doveva parsare esplicitamente ed eseguire l'[[SQL]] statement. Le ultime versioni hanno incluso una sintassi <code>EXECUTE IMMEDIATE</code> chiamata "Native Dynamic [[SQL]]" che semplifica il problema. Qualsiasi uso di [[DDL]] in Oracle può risultare un esplicito commit. I programmatori possono usare anche l'[[SQL]] dinamico per eseguire DML quando non conoscono in anticipo l'esatto contenuto dello statement.
 
 
Riga 23:
 
 
<p> In ogni release dell'[[Oracle]] [[DBMS]], la Oracle Corporation aggiunge packages contenenti nuove funzionalità.
 
== Struttura base del codice ==
Riga 164:
 
==Linguaggi simili==
Anche 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 ([http://publib.boulder.ibm.com/infocenter/db2help/index.jsp?topic=/com.ibm.db2.udb.doc/ad/c0011916.htm SQL PL]) e [[MySQL]] ha una versione di [[SQL]] molto simile a PL/SQL.
 
PL/SQL assomiglia da vicino al [[Pascal (linguaggio)|Pascal]]. La struttura a packages alla struttura base del [[Pascal (linguaggio)|Pascal]], o alle unità [[Delphi]].
 
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]].
 
==Riferimenti==