2013-10-11 73 views
1

我是SQL Server 2012的新手,在练习时我注意到一个我无法纠正的错误。SQL SERVER 2012数据类型错误

我创建了一个包含主键和另一个表的参考表。参见表格:

create table emp 
(
    empno integer not null, 
    ename varchar(10), 
    job varchar(9), 
    mgr varchar(10), 
    hiredate date, 
    sal decimal(7,2), 
    comm decimal(12,3), 
    deptno integer references dept(deptno) 
) 

尝试使用

insert into emp values(100,'Sachin','IT','Srikanth','10-10-2009', 
    50000.00,500.00,1) 

插入值,但我得到了下面的错误。

算术溢出错误转换数字数据类型数字

另外,如果我改变COMM的数据类型到decimal,误差消失。

+2

我无法使此插入语句失败。你确定这确实是失败的吗? –

+0

查询无误,在我身边执行得很好 – bgs

回答

0

在您的查询[decimal(7,2)]数据类型是问题。

(7,2)告诉您该数字可以具有总共7位数的精度,其中2位保留给小数部分。

因此,你只有4位像5000.00有效可用来存储值,以及500000.00导致溢出

+1

问题中没有值500000.00。 50000.00在那里,但它适合7,2就好了。 –

+0

是的。同意..但是,这种情况可能算术溢出异常抛出.. – bgs

+0

我怀疑你是对的,并且OP没有真正揭示导致错误的真实陈述,但你的答案仍然意味着有一个无效在这个问题中的价值(也许你错误地阅读),哪里没有...... –