DATA TYPES

E' possibile visualizzare i tipi di dato di una tabella con il comando:
DESC nome_tabella;

DATE  è un tipo di dato Oracle che memorizza dati in uno speciale formato numerico interno ad Oralce e rappresenta anno, mese, giorno, ora, minuti e secondi. Di default è visibile nel formato DD-MON-RR.
RR calcola in automatico il secolo dalla funzione SYSDATE sulla base dei primi due e degli ultimi digit dell'anno corrente. E' come YY ma può essere utilizzato per specificare differenti secoli.
Anno Corrente    Data fornita    Interpretato da RR    Interpretato da YY
1978                   22-OCT-78         1978                            1978
1978                   22-OCT-49         2049                            1949
2078                   22-OCT-49         2149                            2049
2048                   22-OCT-78         1978                            2078

I dati sono memorizzati internamente come:
CENTURY YAER MONTH DAY HOUR MINUTE SECOND 19 78 10 22 12 30 43
Inoltre possiede una propria aritmetica che consente di sommare ad esempio 1 ad una data per ottenere un altra data. In breve, 24 h corrisponde ad 1, quindi 1 h corrisponde a 1/24 e un minuto a 1/(24*60). Quindi se vogliamo aggiungere un giorno dovremmo eseguire SYSDATE + 1, mentre per aggiungere 10 minuti SYSDATE + 10/(24*60).
Il modo più semplice per manipolare le date è utilizzare la funzione TO_CHAR che le converte in stringhe.

TIMESTAMP(n) è un estenzione del tipo DATE con aggiunta della frazione di secondi, quindi memorizza anno, mese, giorno, ora, minuti, secondi e frazione di secondi. Il valore n specifica la precisione che da 1 a 9 e se omesso, di default è 6 .

TIMESTAMP(n) WITH TIME ZONE è come il TIMESTAMP ma in più visualizza il Time Zone Region Name o il Time Zone offset da UTC - Coordinated Universal Time; è il nuovo nome di Greenwich Mean Time (GMT).

TIMESTAMP(n) WITH LOCAL TIME ZONE è come il TIMESTAMP ma memorizza il tempo secondo il time zone del database

Es e m p i o
select
current_date       as "DATE",
localtimestamp (4) as "TIMESTAMP",
current_timestamp  as "TIMESTAMP WITH TIME ZONE" ,  -- Time Zone Region
SYSTIMESTAMP       as "TIMESTAMP WITH TIME ZONE"    -- Time Zone Offset
from dual;



VARCHAR2(size)  è un tipo di dato carattere di lunghezza variabile da un minimo di 1 ad un massimo di 4000 bytes. Deve essere specificata la dimensione massima altrimenti va in errore.
E s e m p i o
CREATE TABLE prova_dati (
idato number constraint iddato_pk primary key,
nome varchar2 ,
cognome varchar2(20) );

Errore alla riga del comando:3 Colonna:14
Report errori: Errore SQL: ORA-00906: missing left parenthesis
00906. 00000 -  "missing left parenthesis"

CHAR[(size)]  è un tipo di dato carattere di lunghezza fissa in bytes. Di default il minimo è 1 e il massimo è 2000. Se non è specificata la dimensione della colonna può essere memorizzata solo un carattere.
Esempio
CREATE TABLE prova_dati (
idato number constraint iddato_pk primary key,
nome char ,
cognome varchar(20) );

Se viene superata la massima dimensione, in questo esempio 1, termina in errore.
INSERT INTO prova_dati VALUES (102, 'ABC', 'CIAO');

Errore SQL: ORA-12899: value too large for column "SH"."PROVA_DATI"."NOME" (actual: 3, maximum: 1)
12899. 00000 -  "value too large for column %s (actual: %s, maximum: %s)"

Essendo un tipo di dato di lunghezza fissa, le stringhe minori della dimensione specificata sono riempite con spazi (blank-padded).
ALTER TABLE PROVA_DATI  MODIFY NOME CHAR(6);
INSERT INTO prova_dati VALUES (20, 'Franky', 'CIAO');
INSERT INTO prova_dati VALUES (21, 'Dan', 'CIAO');
Franky
Dan    

NUMBERS[(p,s)]  è un tipo di dato numerico in cui può essere specificato il numero di digits decimali (precision) da 1 a 38 e il numero di digits a destra della posizione decimale (scale) da -84 a 127. Se una colonna è di tipo NUMBER(6,2), dei 6 digits due devono essere a destra, quindi 1111.11 è corretta mentre 11111.1 non è valida. Può memorizzare numeri positivi e negativi.

Post popolari in questo blog

ORA-12154: TNS: il listener non è attualmente a conoscenza del servizio richiesto nel descrittore di connessione

Create e Drop Pluggable Database