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

โšก Riepilogo intelligente

I tipi di dati PL/SQL definiscono come Oracle Memorizzano, gestiscono e vincolano ciascun valore in un blocco. Si raggruppano in famiglie di caratteri, numeri, booleani, date e oggetti di grandi dimensioni (LOB), ognuna con il proprio formato di memorizzazione, limiti di dimensione e regole di assegnazione.

  • ๐Ÿ”ค Carattere: CHAR ha lunghezza fissa, VARCHAR2 ha lunghezza variabile, mentre NCHAR e NVARCHAR2 utilizzano il set di caratteri nazionale.
  • ๐Ÿ”ข Numero: La classe NUMBER memorizza valori a virgola fissa o mobile con una precisione fino a 38 cifre.
  • โœ… booleano: Contiene valori VERO o FALSO ed รจ utilizzato principalmente nella logica condizionale.
  • ???? Data: Memorizza data e ora, impostando di default la mezzanotte se non viene specificato alcun orario.
  • ๐Ÿ—‚๏ธ PALLONETTO: BLOB, CLOB, NCLOB e BFILE memorizzano grandi quantitร  di dati non strutturati fino a 128 TB.
  • ๐Ÿ’ก migliori Pratica: Preferisci VARCHAR2 a CHAR e LOB a LONG per risparmiare memoria e garantire la compatibilitร  futura.
  • ๐Ÿ”— Scopo: I tipi SQL si applicano alle colonne delle tabelle; i tipi PL/SQL vengono utilizzati all'interno dei blocchi PL/SQL.

Oracle Tipi di dati PL/SQL

Che cosa sono i tipi di dati PL/SQL?

Tipi di dati in PL/SQL definire come i dati verranno archiviati, gestiti e trattati da Oracle durante l'archiviazione e l'elaborazione. I tipi di dati sono associati a uno specifico formato di archiviazione e a vincoli di intervallo. In OracleAd ogni valore o costante viene assegnato un tipo di dati.

La differenza principale tra PL/SQL e SQL I tipi di dati sono che i tipi di dati SQL sono limitati alle colonne della tabella, mentre i tipi di dati PL/SQL sono utilizzati nella Blocchi PL/SQLMaggiori dettagli saranno forniti piรน avanti nel tutorial.

Di seguito รจ riportato un diagramma delle diverse Oracle Tipi di dati PL/SQL:

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

Tipo di dati CARATTERE PL/SQL

Questo tipo di dati memorizza caratteri alfanumerici in formato stringa. I valori letterali devono essere sempre racchiusi tra virgolette singole quando vengono assegnati a un tipo di dati CHARACTER.

Questo tipo di dati carattere รจ ulteriormente classificato come segue:

  • Tipo di dati CHAR (stringa di dimensione fissa)
  • Tipo di dati VARCHAR2 (dimensione variabile della stringa)
  • Tipo di dati VARCHAR
  • 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 un valore stringa e la dimensione della stringa รจ fissa al momento della dichiarazione. variabile.

  • Oracle riempie la variabile con spazi vuoti se non occupa l'intera dimensione dichiarata, quindi Oracle alloca la memoria per la dimensione dichiarata anche se la variabile non la riempie.
  • La limitazione della dimensione รจ 1-2000 byte.
  • CHAR รจ piรน appropriato laddove si gestisce una dimensione fissa dei dati.
grade CHAR;
manager CHAR (10):= 'guru99';

Spiegazione della sintassi:

  • La prima istruzione dichiara la variabile 'grade' di tipo CHAR con una dimensione massima di 1 byte (valore predefinito).
  • La seconda istruzione dichiara la variabile 'manager' di tipo CHAR con una dimensione massima di 10 e le assegna il valore 'guru99', che corrisponde a 6 byte. Oracle in questo caso alloca 10 byte anzichรฉ 6.
VARCHAR2 Questo tipo di dati memorizza una stringa, ma la lunghezza non รจ fissa.

  • Il limite di dimensione รจ di 1-4000 byte per una colonna di tabella e di 1-32767 byte per una variabile.
  • La dimensione di ciascuna variabile viene definita al momento della dichiarazione.
  • Oracle alloca memoria solo dopo che la variabile รจ stata definita, quindi utilizza la lunghezza effettiva della stringa memorizzata anzichรฉ la dimensione dichiarata.
  • รˆ sempre consigliabile utilizzare VARCHAR2 anzichรฉ CHAR per ottimizzare l'utilizzo della memoria.
manager VARCHAR2(10) := 'guru99';

Spiegazione della sintassi:

  • L'istruzione dichiara la variabile 'manager' di tipo dati VARCHAR2 con una dimensione massima di 10 e le assegna il valore 'guru99', che corrisponde a 6 byte. Oracle qui alloca memoria di soli 6 byte.
VARCHAR Questo รจ sinonimo del tipo di dati VARCHAR2.

  • รˆ sempre buona norma utilizzare VARCHAR2 anzichรฉ VARCHAR per evitare cambiamenti di comportamento.
manager VARCHAR(10) := 'guru99';

Spiegazione della sintassi:

  • L'istruzione dichiara la variabile 'manager' di tipo dati VARCHAR con una dimensione massima di 10 e le assegna 'guru99', 6 byte. Oracle alloca solo 6 byte, in modo simile a VARCHAR2.
NCHAR Questo tipo di dati รจ identico a CHAR, ma il set di caratteri รจ 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:

  • L'istruzione dichiara la variabile 'nativa' di tipo dati NCHAR con una dimensione massima di 10.
  • La lunghezza dipende dal numero di byte per carattere definito nel set di caratteri.
NVARCHAR2 Questo tipo di dati รจ identico a VARCHAR2, ma il set di caratteri รจ 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-4000 byte.
Native_var NVARCHAR2(10):= 'guru99';

Spiegazione della sintassi:

  • L'istruzione dichiara la variabile 'Native_var' di tipo dati NVARCHAR2 con una dimensione massima di 10.
LUNGO e LUNGO CRUDO Questo tipo di dati memorizza testi di grandi dimensioni o dati grezzi fino a una dimensione massima di 2 GB.

  • Questi sono utilizzati principalmente nel dizionario dei dati.
  • LONG memorizza i dati relativi al set di caratteri, mentre LONG RAW memorizza i dati in formato binario.
  • LONG RAW accetta oggetti multimediali e immagini, mentre LONG funziona solo su dati che possono essere memorizzati utilizzando un set di caratteri.
Large_text LONG;
Large_raw LONG RAW;

Spiegazione della sintassi:

  • L'istruzione dichiara 'Large_text' di tipo dati LONG e 'Large_raw' di tipo dati LONG RAW.

Nota: L'utilizzo del tipo di dati LONG non รจ raccomandato da Oracleรˆ preferibile utilizzare il tipo di dati LOB.

Tipo di dati PL/SQL NUMBER

Questo tipo di dati memorizza numeri a virgola fissa o mobile con una precisione fino a 38 cifre. Viene utilizzato per lavorare con campi che contengono solo dati numerici. La variabile puรฒ essere dichiarata con o senza dettagli relativi alla precisione e alle cifre decimali. I valori non devono essere racchiusi tra virgolette quando vengono assegnati.

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

Spiegazione della sintassi:

  • La prima dichiarazione dichiara la variabile 'A' di tipo numerico con precisione totale di 8 e 2 cifre decimali.
  • La seconda dichiara 'B' di tipo numerico con precisione totale 8 e senza cifre decimali.
  • Il terzo รจ il piรน generico, e dichiara il tipo di dati numerico 'C' senza alcuna restrizione sulla precisione o sul numero di decimali. Puรฒ contenere fino a 38 cifre.

Tipo di dati BOOLEAN PL/SQL

Questo tipo di dati memorizza valori logici. Il Oracle Il tipo di dati booleano rappresenta il valore VERO o FALSO ed รจ utilizzato principalmente nelle istruzioni condizionali. I valori non devono essere racchiusi tra virgolette quando vengono assegnati.

Var1 BOOLEAN;

Spiegazione della sintassi:

  • La variabile 'Var1' รจ dichiarata come tipo di dati BOOLEAN. L'output sarร  vero o falso in base alla condizione impostata.

Tipo di dati DATA PL/SQL

Questo tipo di dati memorizza i valori in formato data, ovvero giorno, mese e anno. Ogni volta che una variabile viene definita con il tipo di dati DATE, puรฒ contenere informazioni sull'ora; per impostazione predefinita, l'ora viene impostata su 12:00:00 se non specificata. I valori devono essere racchiusi tra virgolette quando vengono assegnati.

Lo standard Oracle Il formato orario per input e output รจ 'DD-MON-YY', impostato in NLS_PARAMETERS (NLS_DATE_FORMAT) a livello di sessione.

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

Spiegazione della sintassi:

  • La variabile 'newyear' รจ dichiarata come tipo di dati DATE e le รจ stato assegnato il valore 1 gennaio 2015.
  • La seconda dichiarazione dichiara 'current_date' come tipo di dati DATE e gli assegna la data corrente del sistema.
  • Entrambe le variabili contengono 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 e file multimediali. Oracle Il tipo di dati LOB รจ preferito al tipo LONG perchรฉ รจ piรน flessibile. I principali vantaggi di LOB rispetto a LONG sono:

  • Una tabella puรฒ contenere al massimo una colonna LONG, mentre non vi รจ alcuna restrizione sul numero di colonne LOB.
  • Gli strumenti di interfaccia dati accettano i valori LOB durante la replica, ma omettono le colonne LONG, che devono essere replicate manualmente.
  • Una colonna LONG puรฒ memorizzare fino a 2 GB, mentre una colonna LOB puรฒ memorizzare fino a 128 TB.
  • Oracle Il tipo di dati LOB viene migliorato a ogni rilascio, mentre LONG rimane sostanzialmente invariato.

Pertanto, รจ sempre consigliabile utilizzare il tipo di dati LOB anzichรฉ LONG. I diversi tipi di dati LOB elencati di seguito possono memorizzare fino a 128 terabyte:

  1. BLOB
  2. CLOB e NCLOB
  3. BFILE
Tipo di dati Descrizione Sintassi
BLOB Questo tipo di dati memorizza i dati LOB in formato file binario fino a un massimo di 128 TB. Non memorizza i dati in base ai dettagli del set di caratteri, quindi puรฒ memorizzare dati non strutturati come oggetti multimediali e immagini.
Binary_data BLOB;

Spiegazione della sintassi:

  • La variabile 'Binary_data' รจ dichiarata come BLOB.
CLOB e NCLOB CLOB memorizza i dati LOB nel set di caratteri, mentre NCLOB li memorizza nel set di caratteri nativo. Poichรฉ utilizzano un'archiviazione basata su set di caratteri, non possono memorizzare dati multimediali o immagini. La dimensione massima รจ di 128 TB.
Charac_data CLOB;

Spiegazione della sintassi:

  • La variabile 'Charac_data' รจ dichiarata come tipo di dati CLOB.
BFILE
  • BFILE memorizza i dati binari non strutturati al di fuori del database come file di sistema operativo.
  • La dimensione di un file BFILE รจ limitata dal sistema operativo e i file sono di sola lettura e non possono essere modificati.

DOMANDE FREQUENTI

CHAR ha lunghezza fissa e riempie i valori con spazi fino alla dimensione dichiarata, sprecando spazio con valori troppo brevi. VARCHAR2 ha lunghezza variabile e memorizza solo i caratteri effettivi, quindi รจ preferibile per la maggior parte delle colonne di tipo stringa.

LOB consente molte colonne per tabella, memorizza fino a 128 TB e viene costantemente migliorato a ogni nuova versione. LONG รจ limitato a una sola colonna, ha un limite massimo di 2 GB ed รจ mantenuto principalmente per garantire la compatibilitร  con le versioni precedenti.

Non nelle versioni precedenti. BOOLEAN era un tipo esclusivo di PL/SQL, quindi le colonne delle tabelle utilizzavano invece un flag NUMBER o CHAR. Viene utilizzato direttamente all'interno dei blocchi per la logica condizionale.

Sรฌ. Analizzando i valori campione per lunghezza, intervallo e formato, l'IA puรฒ suggerire VARCHAR2, NUMBER, DATE o LOB e segnalare le colonne di dimensioni eccessive. Conferma la scelta con dati futuri.

Sรฌ. Il tipo DATE memorizza secolo, anno, mese, giorno, ora, minuto e secondo. Se non viene specificato alcun orario, il valore predefinito รจ la mezzanotte. Per i secondi frazionari o i fusi orari, utilizzare il tipo TIMESTAMP.

Riassumi questo post con: