PL / SQL - Tipi di dati
In questo capitolo, discuteremo i tipi di dati in PL / SQL. Le variabili PL / SQL, le costanti ei parametri devono avere un tipo di dati valido, che specifica un formato di archiviazione, vincoli e un intervallo di valori valido. Ci concentreremo sulSCALAR e il LOBtipi di dati in questo capitolo. Gli altri due tipi di dati verranno trattati in altri capitoli.
S.No | Categoria e descrizione |
---|---|
1 | Scalar Valori singoli senza componenti interni, come a NUMBER, DATE, o BOOLEAN. |
2 | Large Object (LOB) Puntatori a oggetti di grandi dimensioni che vengono memorizzati separatamente da altri elementi di dati, come testo, immagini grafiche, clip video e forme d'onda audio. |
3 | Composite Elementi di dati che hanno componenti interni a cui è possibile accedere individualmente. Ad esempio, raccolte e record. |
4 | Reference Puntatori ad altri elementi di dati. |
Tipi e sottotipi di dati scalari PL / SQL
I tipi e i sottotipi di dati scalari PL / SQL rientrano nelle seguenti categorie:
S.No | Tipo di data e descrizione |
---|---|
1 | Numeric Valori numerici su cui vengono eseguite le operazioni aritmetiche. |
2 | Character Valori alfanumerici che rappresentano singoli caratteri o stringhe di caratteri. |
3 | Boolean Valori logici su cui vengono eseguite le operazioni logiche. |
4 | Datetime Date e orari. |
PL / SQL fornisce sottotipi di tipi di dati. Ad esempio, il tipo di dati NUMBER ha un sottotipo chiamato INTEGER. È possibile utilizzare i sottotipi nel programma PL / SQL per rendere i tipi di dati compatibili con i tipi di dati in altri programmi incorporando il codice PL / SQL in un altro programma, come un programma Java.
Tipi di dati numerici PL / SQL e sottotipi
La tabella seguente elenca i tipi di dati numerici predefiniti PL / SQL e i loro sottotipi -
S.No | Tipo di dati e descrizione |
---|---|
1 | PLS_INTEGER Numero intero con segno compreso tra -2.147.483.648 e 2.147.483.647, rappresentato in 32 bit |
2 | BINARY_INTEGER Numero intero con segno compreso tra -2.147.483.648 e 2.147.483.647, rappresentato in 32 bit |
3 | BINARY_FLOAT Numero a virgola mobile in formato IEEE 754 a precisione singola |
4 | BINARY_DOUBLE Numero a virgola mobile in formato IEEE 754 a precisione doppia |
5 | NUMBER(prec, scale) Numero a virgola fissa o virgola mobile con valore assoluto compreso tra 1E-130 e 1.0E126 (ma non incluso). Una variabile NUMBER può anche rappresentare 0 |
6 | DEC(prec, scale) Tipo a virgola fissa specifico ANSI con massima precisione di 38 cifre decimali |
7 | DECIMAL(prec, scale) Tipo di virgola fissa specifico IBM con massima precisione di 38 cifre decimali |
8 | NUMERIC(pre, secale) Tipo mobile con massima precisione di 38 cifre decimali |
9 | DOUBLE PRECISION Tipo a virgola mobile specifico ANSI con massima precisione di 126 cifre binarie (circa 38 cifre decimali) |
10 | FLOAT Tipo a virgola mobile specifico ANSI e IBM con massima precisione di 126 cifre binarie (circa 38 cifre decimali) |
11 | INT Tipo intero specifico ANSI con massima precisione di 38 cifre decimali |
12 | INTEGER Tipo intero specifico ANSI e IBM con massima precisione di 38 cifre decimali |
13 | SMALLINT Tipo intero specifico ANSI e IBM con massima precisione di 38 cifre decimali |
14 | REAL Tipo a virgola mobile con massima precisione di 63 cifre binarie (circa 18 cifre decimali) |
Di seguito è una dichiarazione valida -
DECLARE
num1 INTEGER;
num2 REAL;
num3 DOUBLE PRECISION;
BEGIN
null;
END;
/
Quando il codice precedente viene compilato ed eseguito, produce il seguente risultato:
PL/SQL procedure successfully completed
Tipi di dati e sottotipi di caratteri PL / SQL
Di seguito è riportato il dettaglio dei tipi di dati carattere predefiniti PL / SQL e dei loro sottotipi:
S.No | Tipo di dati e descrizione |
---|---|
1 | CHAR Stringa di caratteri a lunghezza fissa con dimensione massima di 32.767 byte |
2 | VARCHAR2 Stringa di caratteri a lunghezza variabile con dimensione massima di 32.767 byte |
3 | RAW Stringa binaria o byte a lunghezza variabile con dimensione massima di 32.767 byte, non interpretata da PL / SQL |
4 | NCHAR Stringa di caratteri nazionali a lunghezza fissa con dimensione massima di 32.767 byte |
5 | NVARCHAR2 Stringa di caratteri nazionali a lunghezza variabile con dimensione massima di 32.767 byte |
6 | LONG Stringa di caratteri a lunghezza variabile con dimensione massima di 32.760 byte |
7 | LONG RAW Stringa binaria o byte di lunghezza variabile con dimensione massima di 32.760 byte, non interpretata da PL / SQL |
8 | ROWID Identificatore di riga fisico, l'indirizzo di una riga in una tabella ordinaria |
9 | UROWID Identificatore di riga universale (identificatore di riga fisico, logico o esterno) |
Tipi di dati booleani PL / SQL
Il BOOLEANil tipo di dati memorizza i valori logici utilizzati nelle operazioni logiche. I valori logici sono i valori booleaniTRUE e FALSE e il valore NULL.
Tuttavia, SQL non ha un tipo di dati equivalente a BOOLEAN. Pertanto, i valori booleani non possono essere utilizzati in -
- Dichiarazioni SQL
- Funzioni SQL integrate (come TO_CHAR)
- Funzioni PL / SQL richiamate da istruzioni SQL
PL / SQL Datetime e tipi di intervallo
Il DATEdatatype viene utilizzato per memorizzare datetimes a lunghezza fissa, che includono l'ora del giorno in secondi dalla mezzanotte. Le date valide vanno dal 1 gennaio 4712 a.C. al 31 dicembre 9999 d.C.
Il formato della data predefinito è impostato dal parametro di inizializzazione Oracle NLS_DATE_FORMAT. Ad esempio, il valore predefinito potrebbe essere "GG-LUN-AA", che include un numero di due cifre per il giorno del mese, un'abbreviazione del nome del mese e le ultime due cifre dell'anno. Ad esempio, 01-OCT-12.
Ogni DATE include il secolo, l'anno, il mese, il giorno, l'ora, i minuti e i secondi. La tabella seguente mostra i valori validi per ogni campo:
Nome campo | Valori data / ora validi | Valori di intervallo validi |
---|---|---|
ANNO | Da -4712 a 9999 (escluso anno 0) | Qualsiasi numero intero diverso da zero |
MESE | Da 01 a 12 | Da 0 a 11 |
GIORNO | Da 01 a 31 (limitato dai valori di MONTH e YEAR, secondo le regole del calendario per il locale) | Qualsiasi numero intero diverso da zero |
ORA | Da 00 a 23 | Da 0 a 23 |
MINUTO | Da 00 a 59 | Da 0 a 59 |
SECONDO | Da 00 a 59,9 (n), dove 9 (n) è la precisione del tempo frazionario dei secondi | Da 0 a 59,9 (n), dove 9 (n) è la precisione dei secondi frazionari dell'intervallo |
TIMEZONE_HOUR | Da -12 a 14 (la gamma si adatta alle modifiche dell'ora legale) | Non applicabile |
TIMEZONE_MINUTE | Da 00 a 59 | Non applicabile |
TIMEZONE_REGION | Trovato nella visualizzazione dinamica delle prestazioni V $ TIMEZONE_NAMES | Non applicabile |
TIMEZONE_ABBR | Trovato nella visualizzazione dinamica delle prestazioni V $ TIMEZONE_NAMES | Non applicabile |
Tipi di dati PL / SQL Large Object (LOB)
I tipi di dati LOB (Large Object) si riferiscono a elementi di dati di grandi dimensioni come testo, immagini grafiche, clip video e forme d'onda audio. I tipi di dati LOB consentono un accesso efficiente, casuale e a tratti a questi dati. Di seguito sono riportati i tipi di dati LOB PL / SQL predefiniti:
Tipo di dati | Descrizione | Taglia |
---|---|---|
BFILE | Utilizzato per memorizzare oggetti binari di grandi dimensioni nei file del sistema operativo all'esterno del database. | Dipendente dal sistema. Non può superare i 4 gigabyte (GB). |
BLOB | Utilizzato per memorizzare oggetti binari di grandi dimensioni nel database. | Da 8 a 128 terabyte (TB) |
CLOB | Utilizzato per memorizzare grandi blocchi di dati di caratteri nel database. | Da 8 a 128 TB |
NCLOB | Utilizzato per memorizzare grandi blocchi di dati NCHAR nel database. | Da 8 a 128 TB |
Sottotipi PL / SQL definiti dall'utente
Un sottotipo è un sottoinsieme di un altro tipo di dati, denominato tipo di base. Un sottotipo ha le stesse operazioni valide del suo tipo di base, ma solo un sottoinsieme dei suoi valori validi.
PL / SQL predefinisce diversi sottotipi nel pacchetto STANDARD. Ad esempio, PL / SQL predefinisce i sottotipiCHARACTER e INTEGER come segue -
SUBTYPE CHARACTER IS CHAR;
SUBTYPE INTEGER IS NUMBER(38,0);
Puoi definire e utilizzare i tuoi sottotipi. Il seguente programma illustra la definizione e l'utilizzo di un sottotipo definito dall'utente:
DECLARE
SUBTYPE name IS char(20);
SUBTYPE message IS varchar2(100);
salutation name;
greetings message;
BEGIN
salutation := 'Reader ';
greetings := 'Welcome to the World of PL/SQL';
dbms_output.put_line('Hello ' || salutation || greetings);
END;
/
Quando il codice precedente viene eseguito al prompt SQL, produce il seguente risultato:
Hello Reader Welcome to the World of PL/SQL
PL/SQL procedure successfully completed.
NULL in PL / SQL
I valori NULL PL / SQL rappresentano missing o unknown datae non sono un numero intero, un carattere o qualsiasi altro tipo di dati specifico. Nota cheNULL non è la stessa di una stringa di dati vuota o del valore del carattere null '\0'. Un null può essere assegnato ma non può essere equiparato a nulla, incluso se stesso.