Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

decimal(s,p) ou número(s,p)?


No Oracle, eles são os mesmos:

As instruções SQL que criam tabelas e clusters também podem usar tipos de dados ANSI e tipos de dados dos produtos IBM SQL/DS e DB2. O Oracle reconhece o nome do tipo de dados ANSI ou IBM que difere do nome do tipo de dados OracleDatabase. Ele converte o tipo de dados para o tipo de dados Oracle equivalente, registra o tipo de dados Oracle como o nome do tipo de dados da coluna e armazena os dados da coluna no tipo de dados Oracle com base nas conversões mostradas nas tabelas a seguir.

A tabela abaixo desta citação mostra que DECIMAL(p,s) é tratado internamente como um 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  

No entanto, a escala padrão é 0 para DECIMAL , o que significa que DECIMAL(*) é tratado como NUMBER(*, 0) , ou seja, 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