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