我试图在Oracle SQL Developer中插入以下语句:
INSERT INTO ACC
VALUES (1245890, 234.50, 'Broomhill', '15-NOV-2003', 100.00);
该语句插入得足够好而没有错误,但是在查看数据视图时,我注意到该行显示的第二个和第四个值少了一个小数点。
(当它应该是234.50和100.00时,例如234.5和100.0)
我尝试在我的表创建代码中增加精度和比例以允许它正确显示。
CREATE TABLE ACC
(
"ACCNO" NUMBER(7),
"BALANCE" NUMBER(5,2),
"BRANCH" VARCHAR(15),
"OPENED" DATE,
"BONUS" NUMBER(5,2)
);
我稍微更改了BALANCE和BONUS数据类型
CREATE TABLE ACC
(
"ACCNO" NUMBER(7),
"BALANCE" NUMBER(5,3)
"BRANCH" VARCHAR(15),
"OPENED" DATE,
"BONUS" NUMBER(5,3)
);
但我得到一个错误说:
Error starting at line : 94 in command -
INSERT INTO ACC
VALUES (1245890, 234.50, 'Broomhill', '15-NOV-2003', 100.00)
Error report -
ORA-01438: value larger than specified precision allowed for this column
我的代码出了什么问题?如何编写它以便正确显示我的值?
答案 0 :(得分:3)
NUMBER(5, 3)
是一个数字,其中有五位数字,小数点右边有三位数字 - 所以两个位于左侧。值“100.00”左侧有三个,因此不适合。
您似乎想要:NUMBER(6, 3)
。
答案 1 :(得分:2)
数字已正确存储到表中,但它们不会以您希望的方式显示,因此您必须使用正确的格式掩码。这是一个例子:
SQL> select to_char(234.50, '990D00') val_1,
2 to_char(100, '990D00') val_2
3 from dual;
VAL_1 VAL_2
------- -------
234,50 100,00
SQL>
这是SQL * Plus;您可以在其他(Oracle)工具中设置它,例如Forms,Reports,Apex等,通常在item的Property Palette窗口中。
查看格式模型,https://docs.oracle.com/cd/B19306_01/server.102/b14200/sql_elements004.htm