Oracle Tipi di dati PL/SQL: booleano, numero, data [Esempio]

Che cosa sono i tipi di dati PL/SQL?

Tipi di dati in PL/SQL vengono utilizzati per definire il modo in cui i dati verranno archiviati, gestiti e trattati Oracle durante la memorizzazione e l'elaborazione dei dati. I tipi di dati sono associati al formato di archiviazione specifico e ai vincoli di intervallo. In Oracle, a ogni valore o costante viene assegnato un tipo di dati.

La differenza principale tra PL/SQL e SQL tipi di dati è che il tipo di dati SQL è limitato alla colonna della tabella mentre i tipi di dati PL/SQL vengono utilizzati in Blocchi PL/SQLMaggiori dettagli saranno forniti più avanti nel tutorial.

Di seguito è riportato lo schema dei diversi Oracle Tipi di dati PL/SQL:

Tipi di dati PL/SQL
Diversi tipi di dati in PL/SQL

Tipo di dati CARATTERE PL/SQL

Questo tipo di dati memorizza fondamentalmente caratteri alfanumerici in formato stringa.

I valori letterali devono essere sempre racchiusi tra virgolette singole durante l'assegnazione al tipo di dati CHARACTER.

Questo tipo di dati carattere è ulteriormente classificato come segue:

  • CHAR Tipo di dati (dimensione stringa fissa)
  • VARCHAR2 Tipo di dati (dimensione stringa variabile)
  • VARCHAR Tipo di dati
  • NCHAR (dimensione stringa fissa nativa)
  • NVARCHAR2 (dimensione stringa variabile nativa)
  • LUNGO e LUNGO CRUDO
Tipo di dati Descrizione Sintassi
CHAR Questo tipo di dati memorizza il valore della stringa e la dimensione della stringa viene fissata al momento della dichiarazione del file variabile.

  • Oracle verrebbe riempito di spazi vuoti la variabile se la variabile non occupasse l'intera dimensione che è stata dichiarata per essa, quindi Oracle allocherà la memoria per la dimensione dichiarata anche se la variabile non la occupava completamente.
  • La limitazione delle dimensioni per questo tipo di dati è compresa tra 1 e 2000 byte.
  • Il tipo di dati CHAR è più appropriato da utilizzare laddove verrà gestita la dimensione fissa dei dati.
grade CHAR;
manager CHAR (10):= 'guru99';

Spiegazione della sintassi:

  • La prima istruzione di dichiarazione ha dichiarato la variabile 'grade' del tipo di dati CHAR con la dimensione massima di 1 byte (valore predefinito).
  • La seconda dichiarazione dichiara la variabile "manager" del tipo di dati CHAR con la dimensione massima di 10 e assegna il valore "guru99" che è di 6 byte. Oracle in questo caso assegnerà la memoria di 10 byte anziché di 6 byte.
VARCHAR2 Questo tipo di dati memorizza la stringa, ma la lunghezza della stringa non è fissa.

  • La limitazione delle dimensioni per questo tipo di dati è compresa tra 1 e 4000 byte per le dimensioni delle colonne della tabella e tra 1 e 32767 byte per le variabili.
  • La dimensione è definita per ciascuna variabile al momento della dichiarazione della variabile.
  • Ma Oracle allocherà la memoria solo dopo che la variabile è stata definita, ovvero Oracle prenderà in considerazione solo la lunghezza effettiva della stringa memorizzata in una variabile per l'allocazione della memoria anziché la dimensione fornita per una variabile nella parte della dichiarazione.
  • È sempre opportuno utilizzare VARCHAR2 anziché il tipo di dati CHAR per ottimizzare l'utilizzo della memoria.
manager VARCHAR2(10) := ‘guru99';

Spiegazione della sintassi:

  • La dichiarazione di cui sopra ha dichiarato la variabile "manager" del tipo di dati VARCHAR2 con la dimensione massima di 10 e assegnato il valore "guru99" che è di 6 byte. Oracle in questo caso allocherà memoria di soli 6 byte.
VARCHAR Questo è sinonimo del tipo di dati VARCHAR2.

  • È sempre una buona pratica utilizzare VARCHAR2 invece di VARCHAR per evitare cambiamenti comportamentali.
manager VARCHAR(10) := ‘guru99';

Spiegazione della sintassi:

  • La dichiarazione di cui sopra ha dichiarato la variabile "manager" del tipo di dati VARCHAR con la dimensione massima di 10 e assegnato il valore "guru99" che è di 6 byte. Oracle in questo caso allocherà memoria di soli 6 byte. (Simile a VARCHAR2)
NCHAR Questo tipo di dati è uguale al tipo di dati CHAR, ma il set di caratteri sarà quello nazionale.

  • Questo set di caratteri può essere definito per la sessione utilizzando NLS_PARAMETERS.
  • Il set di caratteri può essere UTF16 o UTF8.
  • La limitazione della dimensione è 1-2000 byte.
native NCHAR(10);

Spiegazione della sintassi:

  • La dichiarazione di cui sopra dichiara la variabile 'nativa' del tipo di dati NCHAR con dimensione massima di 10.
  • La lunghezza di questa variabile dipende dal (numero di lunghezze) per byte come definito nel set di caratteri.
NVARCHAR2 Questo tipo di dati è uguale al tipo di dati VARCHAR2, ma il set di caratteri sarà del set di caratteri nazionale.

  • Questo set di caratteri può essere definito per la sessione utilizzando NLS_PARAMETERS.
  • Il set di caratteri può essere UTF16 o UTF8.
  • La limitazione della dimensione è 1-4000 byte.
Native var NVARCHAR2(10):='guru99';

Spiegazione della sintassi:

  • L'istruzione di dichiarazione sopra riportata dichiara la variabile 'Native_var' di tipo di dati NVARCHAR2 con dimensione massima di 10.
LUNGO e LONGRAW Questo tipo di dati viene utilizzato per archiviare testo di grandi dimensioni o dati grezzi fino alla dimensione massima di 2 GB.

  • Questi sono utilizzati principalmente nel dizionario dei dati.
  • Il tipo di dati LONG viene utilizzato per memorizzare i dati del set di caratteri, mentre LONG RAW viene utilizzato per memorizzare i dati in formato binario.
  • Il tipo di dati LONG RAW accetta oggetti multimediali, immagini, ecc. mentre LONG funziona solo su dati che possono essere memorizzati utilizzando il set di caratteri.
Large_text LONG;
Large_raw LONG RAW;

Spiegazione della sintassi:

  • L'istruzione di dichiarazione sopra riportata dichiara la variabile 'Large_text' di tipo dati LONG e 'Large_raw' di tipo dati LONG RAW.

Nota: L'utilizzo del tipo di dati LONG non è consigliato da Oracle. È invece preferibile il tipo di dati LOB.

Tipo di dati PL/SQL NUMBER

Questo tipo di dati memorizza numeri fissi o in virgola mobile fino a 38 cifre di precisione. Questo tipo di dati è utilizzato per lavorare con campi che conterranno solo dati numerici. La variabile può essere dichiarata con precisione e dettagli sulle cifre decimali o senza queste informazioni. I valori non devono essere racchiusi tra virgolette durante l'assegnazione per questo tipo di dati.

A NUMBER(8,2);
B NUMBER(8);
C NUMBER;

Spiegazione della sintassi:

  • Nella prima dichiarazione sopra, si afferma che la variabile 'A' è di tipo numerico con precisione totale 8 e cifre decimali 2.
  • La seconda dichiarazione dichiara che la variabile 'B' è un tipo di dato numerico con precisione totale 8 e nessuna cifra decimale.
  • La terza dichiarazione è la più generica, dichiara che la variabile 'C' è di tipo di dati numerico senza restrizioni di precisione o cifre decimali. Può contenere fino a un massimo di 38 cifre.

Tipo di dati BOOLEAN PL/SQL

Questo tipo di dati memorizza i valori logici. Oracle Il tipo di dati booleano rappresenta VERO o FALSO e viene utilizzato principalmente nelle istruzioni condizionali. Non è necessario racchiudere i valori tra virgolette durante l'assegnazione per questo tipo di dati.

Var1 BOOLEAN;

Spiegazione della sintassi:

  • In quanto sopra, la variabile 'Var1' è dichiarata come tipo di dati BOOLEAN. L'output del codice sarà vero o falso in base alla condizione impostata.

Tipo di dati DATA PL/SQL

Questo tipo di dati memorizza i valori nel formato data, come data, mese e anno. Ogni volta che una variabile viene definita con il tipo di dati DATE insieme alla data, può contenere informazioni sull'ora e per impostazione predefinita le informazioni sull'ora sono impostate su 12:00:00 se non specificate. I valori devono essere racchiusi tra virgolette durante l'assegnazione per questo tipo di dati.

Lo standard Oracle il formato dell'ora per l'input e l'output è "GG-MON-AA" ed è nuovamente impostato su NLS_PARAMETERS (NLS_DATE_FORMAT) a livello di sessione.

newyear DATE:='01-JAN-2015';
current_date DATE:=SYSDATE;

Spiegazione della sintassi:

  • In quanto sopra, la variabile "newyear" è dichiarata come tipo di dati DATE e gli viene assegnato il valore di Jan 1st, data 2015.
  • La seconda dichiarazione dichiara la variabile current_date come tipo di dati DATE e le assegna il valore con la data corrente del sistema.
  • Entrambe queste variabili contengono le informazioni temporali.

Tipo di dati LOB PL/SQL

Questo tipo di dati viene utilizzato principalmente per archiviare e manipolare grandi blocchi di dati non strutturati come immagini, file multimediali, ecc. Oracle preferisce LOB invece del tipo di dati LONG poiché è più flessibile del tipo di dati LONG. Di seguito sono riportati i vantaggi principali di LOB rispetto al tipo di dati LONG.

  • Il numero di colonne in una tabella con tipo di dati LONG è limitato a 1, mentre una tabella non ha restrizioni sul numero di colonne con tipo di dati LOB.
  • Lo strumento di interfaccia dati accetta il tipo di dati LOB della tabella durante la replica dei dati, ma omette la colonna LONG della tabella. Queste colonne LONG devono essere replicate manualmente.
  • La dimensione della colonna LONG è 2 GB, mentre LOB può archiviare fino a 128 TB.
  • Oracle migliora costantemente il tipo di dati LOB in ciascuna delle sue versioni in base ai requisiti moderni, mentre il tipo di dati LONG è costante e non riceve molti aggiornamenti.

Quindi, è sempre bene usare il tipo di dati LOB invece del tipo di dati LONG. Di seguito sono riportati i diversi tipi di dati LOB. Possono memorizzare fino a una dimensione di 128 terabyte.

  1. BLOB
  2. CLOB e NCLOB
  3. BFILE
Tipo di dati Descrizione Sintassi
BLOB Questo tipo di dati memorizza i dati LOB nel formato di file binario fino alla dimensione massima di 128 TB. Questo non memorizza i dati in base ai dettagli del set di caratteri, in modo che possa memorizzare i dati non strutturati come oggetti multimediali, immagini, ecc.
Binary_data BLOB;

Spiegazione della sintassi:

  • In quanto sopra, la variabile "Binary_data" è dichiarata come BLOB.
CLOB e NCLOB Il tipo di dati CLOB memorizza i dati LOB nel set di caratteri, mentre NCLOB memorizza i dati nel set di caratteri nativi. Poiché questi tipi di dati utilizzano la memorizzazione basata su set di caratteri, non possono memorizzare dati come contenuti multimediali, immagini, ecc. che non possono essere inseriti in una stringa di caratteri. La dimensione massima di questi tipi di dati è 128 TB.
Charac_data CLOB;

Spiegazione della sintassi:

  • In quanto sopra, la variabile "Charac_data" è dichiarata come tipo di dati CLOB.
BFILE
  • BFILE sono i tipi di dati che memorizzano i dati in formato binario non strutturati all'esterno del database come file del sistema operativo.
  • La dimensione di BFILE è relativa a un sistema operativo limitato e sono file di sola lettura e non possono essere modificati.

Sommario

Abbiamo trattato i diversi tipi di dati semplici disponibili in PL / SQL insieme alla loro sintassi. Impareremo i tipi di dati complessi in altri argomenti.