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;

Pubblicitร 

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ร