CREATE TABLE GroovyExps_Tgt
(EMPNO SMALLINT,
FIRSTNAME VARCHAR(20) NOT NULL,
MIDINIT CHAR(1) NOT NULL,
LASTNAME VARCHAR(15) NOT NULL,
SALARY_INT INT,
SALARY_Decimal DECIMAL,
SALARY_Numeric NUMERIC,
SALARY_FLOAT FLOAT(9),
SALARY_MONEY MONEY,
SALARY_SMALLMONEY SMALLMONEY,
BIRTHDATE DATE,
HIREDATE_DATETIME DATETIME,
JOIN_TIME TIME,
JOINTIME DATETIME)
insert into GroovyExps_Tgt values(000080,'LEE','B','BRETT',11111111.11111111,
11111111.11111111,11111111.11111111,
11111111.11111111,11111111.11111111,
11111111.11111111,'1985-05-10',
'2014-04-22 20:25:48.002','20:25','2014-04-22 20:25:48.002')
错误:
Msg 8115,Level 16,State 4,Line 1算术溢出错误 将数字转换为数据类型smallmoney。声明一直如此 终止。
我需要将精确数据插入表中,而不需要对表定义进行任何更改!!!!
答案 0 :(得分:0)
正如错误消息所示,将字符或字符串值(无论是char,varchar,nchar还是nvarchar数据类型)转换为smallmoney数据类型时,会发生此错误,并且字符值包含无法转换为smallmoney的无效字符数据类型。
答案 1 :(得分:0)
问题是值11,111,111超过了smallmoney的最大允许值,介于-2 214,748.3648和214,748.3647之间。有关详细信息,请参阅:
http://msdn.microsoft.com/en-us/library/ms179882.aspx
不能在不改变其定义的情况下在该表中插入该值,使用货币数据类型,你可以完成它...你能告诉我你想要在那里完成什么,所以我可以帮助你更好?
答案 2 :(得分:0)
根据您的插入声明11111111.11111111,您可以使用此值 用作小钱币值。 Smallmoney数据类型需要 4个字节 将值存储在-214,748.3648到+214,748.3647 的范围内。轮到你了 看到你正在为smallmoney使用大价值,这就是它给予的原因 你错了。