PL/SQL: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
WP:SINTASSI: formattazione |
formattazione con "<source lang="plsql">...</source>" e "<code>...</code>"; +cat |
||
Riga 17:
Il PL/SQL ha diversi packages predefiniti, i più importanti sono:
* <code>DBMS_OUTPUT</code> - per le operazioni di output
* <code>DBMS_JOBS</code> - per far lanciare specifiche procedure o funzioni ad un particolare tempo, ad esempio lo scheduling
* <code>DBMS_XPLAN</code> - per formattare un output "Explain Plan"
* <code>DBMS_SESSION</code>
* <code>DBMS_METADATA</code>
In ogni release di Oracle RDBMS, la Oracle Corporation aggiunge packages contenenti nuove funzionalità.
Riga 27:
== Struttura base del codice ==
I programmi
<source lang="plsql">
declare
-- Blocco di dichiarazione (opzionale)
begin
-- Codice da eseguire
exception
-- Gestione eccezioni(opzionale)
end;
/* Esempi di commenti
multilinea.. */
--commento su singola linea
</source>
La sezione <code>DECLARE</code> specifica i tipi di dato delle variabili, delle costanti, delle collezioni e i tipi definiti dall'utente.
Il blocco tra <code>BEGIN</code> ed <code>END</code> specifica il codice da eseguire.
Le eccezioni possono essere di due tipi:
Line 58 ⟶ 51:
# eccezioni definite dall'utente.
I programmatori possono lanciare le eccezioni definite dall'utente in modo esplicito con il commando <code>RAISE</code>:
<
L'Oracle Corporation ha predefinito numerose eccezioni, ad esempio NO_DATA_FOUND, TOO_MANY_ROWS, etc.
Ogni eccezione ha un SQL Error Number e un SQL Error Message associato. I programmatori possono accedere a questi dati con le funzioni <code>SQLCODE</code> e <code>SQLERRM</code>.
== Variabili ==
La sezione <code>DECLARE</code> definisce le variabili, ed eventualmente le inizializza. Se non inizializzate avranno il loro valore di default, ad esempio null o zero.
Per esempio:
<source lang="plsql">
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;
</source>
Il simbolo <code>:=</code> funziona come un operatore di assegnamento, per memorizzare un valore in una variabile.
I tipi di dato più usati sono <code>NUMBER</code>, <code>INTEGER</code>, <code>VARCHAR2</code>, <code>DATE</code>, <code>TIMESTAMP</code> etc.
=== Variabili numeriche ===
<source lang="plsql">nome_variabile number(P,[S]) := valore;</source>
Per definire una variabile numerica il programmatore può usare il tipo <code>NUMBER</code>.
In questo caso è anche possibile definire la precisione (P) e la scala (S). La precisione indica quanti numeri saranno utilizzati per rappresentare il numero. La scala indica quanti numeri sono decimali. Per esempio, 3,1416 è composto da una precisione 5 e una scala 4.
Altri tipi numerici abbastanza comuni sono
=== Variabili testuali ===
<source lang="plsql">nome_variabile varchar2(L) := 'Testo';</source>
Per definire una variabile di tipo testuale, si può usare il tipo <code>VARCHAR2</code>, con eventualmente tra parentesi il numero massimo di caratteri.
Altri tipi di variabile testuale includono:
:<
=== Variabili booleane ===
<source lang="plsql">nome_variabile boolean := true;</source>
Le variabili booleane possono avere i seguenti valori <code>TRUE</code>, <code>FALSE</code> o <code>NULL</code>.
=== Variabili temporali ===
<source lang="plsql">nome_variabile date := '01-Gen-2005';</source>
I programmatori possono definire una variabile di tipo data usando il tipo <code>DATE</code>.
Il DBMS Oracle fornisce la funzione
Ad esempio: <source lang="
Per convertire le date in testo si può usare la funzione
=== Tipi di dati per specifiche colonne ===
Questa sintassi definisce una variabile dello stesso tipo della colonna a cui si riferisce nella dichiarazione.
Line 132 ⟶ 119:
I programmatori possono definire tipi di dato con la seguente sintassi:
Per esempio:
<source lang="plsql">
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;
</source>
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:
<
==Linguaggi simili==
Anche altri DBMS hanno dei linguaggi associati. [[Sybase SQL Server|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
PL/SQL assomiglia da vicino al [[Pascal (linguaggio)|Pascal]]. La struttura a packages alla struttura base del Pascal, o alle unità [[Delphi]].
Line 184 ⟶ 162:
[[Categoria:Database]]
[[Categoria:Linguaggi di programmazione]]
[[ca:PL/SQL]]
|