back to top

Variabili e costanti in PL/SQL – Guida Oracle

Tutte le variabili e le costanti (così come anche i cursori che vedremo in seguito) utilizzate in un blocco PL/SQL devono essere necessariamente dichiarate nella relativa sezione di dichiarazione. Prima di soffermarci sui formati di dichiarazione specifici ecco alcune regole generali per la dichiarazione di variabili e costanti:

  • devono iniziare con un carattere
  • possono contenere sia maiuscole che minuscole
  • devono avere lunghezza massima pari a 30 caratteri
  • non devono contenere spazi
  • non possono coincidere con parole riservate
  • la dichiarazione termina (come ogni istruzione) col punto e virgola

Di seguito ecco la dichiarazione tipo:

<nome_variabile> [costant] <tipo di dati> [not null] [:=<espressione>];
Per il nome_variabile abbiamo già dato le relative regole. La clausola costant, come è facile intuire, indica se si tratta di una costante, nel qual caso una volta che viene assegnato un valore esso non potrà più essere cambiato. I tipi di dato, sono sostanzialmente i classici del SQL, quindi potremo avere varchar2, number, date, boolean. La clausola not null indica che non può essere assegnato un valore null. Si noti che qualora la variabile venga solo dichiarata ma ad essa non viene assegnato alcun valore, il valore null sarà assegnato di default. L’espressione è un valore corrispondente al tipo di dato asegnato alla variabile/costante; essa deve essere preceduta da :=. Di seguito qualche esempio di dichiarazione:
DECLARE
  data_assunzione date;
  nominativo varchar2(80 byte);
  stage	boolean;
  qualifica varchar2(20 byte) := 'Impiegato';

BEGIN

...
...
...

END;

Un altro modo per assegnare un valore ad una variabile è quello di farlo attraverso una query. Supponiamo di avere la nostra tabella "Anagrafica" e di eseguire la seguente query:

SELECT Nome 
FROM Anagrafica 
WHERE Cognome = 'Rossi';
Il risutato della nostra SELECT sarà il valore "Mario". Qualora avessimo voluto assegnare questo valore ad una variabile avremmo utilizzato un codice simile a questo:
DECLARE
  mio_nome varchar2(30 byte);

BEGIN
  SELECT Nome 
  INTO mio_nome 
  FROM Anagrafica 
  WHERE Cognome = 'Rossi';

END;
così facendo la nostra variable "mio_nome" avrà come valore "Mario". Per fare un operazione del genere dovremo essere certi, però, che la query ritorni un unico valore, altrimenti la nostra assegnazione andrà in errore.

Finora abbiamo visto i tipi di dato, per così dire, "classici", ne esiste, tuattavia, un altro, cui si ricore piuttosto frequentemente in PL/SQL in quanto consente di gestire più facilmente i dati estratti dinamicamente dalle nostre tabelle. Supponiamo, come abbiamo fatto sopra, di voler assegnare ad una variabile il valore restituito da una query. Affinchè tutto vada a buon fine dovremo assicurarci che il tipo dato del campo e quello della nostra variabile siano compatibili se non equivalenti; dovremo altresì accertarci che questo non cambi nel tempo. Il modo più sicuro di fare ciò è quello di utilizzare le cosiddette dichiarazioni ancorate che sono dichiarazioni in cui si fa esplicito riferimento al tipo di dato della colonna interessata. Nel nostro caso

Anagrafica.Nome%TYPE
si riferisce al tipo di dato della colonna "Nome" della tabella "Anagrafica". Possiamo anche dichiarare un record atto a memorizzare una tupla completa di una determinata tabella, ovvero, nel nostro caso
Anagrafica%ROWTYPE
è un record adatto a memorizzare tutti i valori di una riga completa (non di un singolo campo) della tabella Anagrafica.

PubblicitÃ