Oracle
 sql >> Database >  >> RDS >> Oracle

decimale(i,p) o numero(i,p)?

In Oracle sono gli stessi:

Le istruzioni SQL che creano tabelle e cluster possono anche utilizzare tipi di dati ANSI e tipi di dati dai prodotti IBM SQL/DS e DB2. Oracle riconosce il nome del tipo di dati ANSI o IBM che differisce dal nome del tipo di dati OracleDatabase. Converte il tipo di dati nel tipo di dati Oracle equivalente, registra il tipo di dati Oracle come nome del tipo di dati della colonna e memorizza i dati della colonna nel tipo di dati Oracle in base alle conversioni mostrate nelle tabelle seguenti.

La tabella sotto questa citazione mostra che DECIMAL(p,s) viene trattato internamente come un NUMBER(p,s) :

SQL> create table t (a decimal(*,5), b number (*, 5));

Table created

SQL> desc t;
Name Type        Nullable Default Comments 
---- ----------- -------- ------- -------- 
A    NUMBER(*,5) Y                         
B    NUMBER(*,5) Y  

Tuttavia, la scala predefinita è 0 per DECIMAL , il che significa che DECIMAL(*) viene trattato come NUMBER(*, 0) , ovvero INTEGER :

SQL> create table t (a decimal, b number, c decimal (5), d decimal (5));

Table created

SQL> desc t;
Name Type      Nullable Default Comments 
---- --------- -------- ------- -------- 
A    INTEGER   Y                         
B    NUMBER    Y                         
C    NUMBER(5) Y                         
D    NUMBER(5) Y