Lors de la création d'une colonne de type NUMBER dans Oracle, vous avez la possibilité de ne pas spécifier de précision ou d'échelle. Que font-ils par défaut si vous ne les spécifiez pas?
Réponses
Trop de publicités?NOMBRE (précision, échelle)
Si aucune précision n'est spécifiée, la colonne stocke les valeurs telles qu'elles sont données. Si aucune échelle n'est spécifiée, l'échelle est zéro.
Beaucoup plus d'infos sur:
http://download.oracle.com/docs/cd/B28359_01/server.111/b28318/datatype.htm#CNCPT1832
Oracle
stocke les nombres de la façon suivante: 1 byte
pour l'alimentation, 1 byte
pour la première significande chiffres (qui est l'un avant le séparateur), le reste pour les autres chiffres.
En digits
ici Oracle
moyen centesimal digits
(j'. e. base 100
)
SQL> INSERT INTO t_numtest VALUES (LPAD('9', 125, '9'))
2 /
1 row inserted
SQL> INSERT INTO t_numtest VALUES (LPAD('7', 125, '7'))
2 /
1 row inserted
SQL> INSERT INTO t_numtest VALUES (LPAD('9', 126, '9'))
2 /
INSERT INTO t_numtest VALUES (LPAD('9', 126, '9'))
ORA-01426: numeric overflow
SQL> SELECT DUMP(num) FROM t_numtest;
DUMP(NUM)
--------------------------------------------------------------------------------
Typ=2 Len=2: 255,11
Typ=2 Len=21: 255,8,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,79
Comme nous pouvons le voir, le nombre maximal ici est - 7.(7) * 10^124
,, et il 19
centésimale chiffres pour la précision, ou 38
chiffres après la virgule.
En fait, vous pouvez toujours le tester vous-même.
CREATE TABLE CUSTOMERS
(
CUSTOMER_ID NUMBER NOT NULL,
JOIN_DATE DATE NOT NULL,
CUSTOMER_STATUS VARCHAR2(8) NOT NULL,
CUSTOMER_NAME VARCHAR2(20) NOT NULL,
CREDITRATING VARCHAR2(10)
)
;
select nom_colonne, type_données, nullable, longueur_données, précision_données, échelle_données à partir de colonnes_tab_utilisateur où nom_table = 'CLIENTS';