SQL server smallmoney数据类型错误

时间:2014-11-20 05:34:52

标签: sql-server-2008 char

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。声明一直如此   终止。

我需要将精确数据插入表中,而不需要对表定义进行任何更改!!!!

3 个答案:

答案 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使用大价值,这就是它给予的原因   你错了。