首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

求教各位SQL2000 错误解析

2013-09-05 
求教各位SQL2000 异常解析请教各位,我写了个数据库同步工具。前几天运行正常,但是数据更新时却爆出异常,反

求教各位SQL2000 异常解析
请教各位,我写了个数据库同步工具。前几天运行正常,但是数据更新时却爆出异常,反复查看都没找到问题。请大家帮帮忙,给我分析下问题所在。谢谢
更新语句如下:
update tivr_pri_info set old=33, big_team_code= (select team_code from tivrteam where team_name ='二') , condemn_expire = 10.02, is_valid = 1, man_type_code=1 where pri_no = 101001252 

错误记录如下:System.Data.SqlClient.SqlException (0x80131904): varchar 值 '4444444444' 的转换溢出了 int 列。超出了最大整数值。
语句已终止。
   在 System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection)
   在 System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)
   在 System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning()
   在 System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)
   在 System.Data.SqlClient.SqlCommand.RunExecuteNonQueryTds(String methodName, Boolean async)
   在 System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(DbAsyncResult result, String methodName, Boolean sendToPipe)
   在 System.Data.SqlClient.SqlCommand.ExecuteNonQuery()
   在 JGtoHJ.JGToHJ.backgroundWorker_trans_DoWork(Object sender, DoWorkEventArgs e)
[解决办法]
错误这么明显:varchar 值 '4444444444' 的转换溢出了 int 列 

你都不自己分析一下。

update tivr_pri_info 
set old=33, big_team_code= (select team_code from tivrteam where team_name ='二') 
, condemn_expire = 10.02, is_valid = 1, man_type_code=1
where pri_no = 101001252
 
但是,这个语句也有问题:
big_team_code= (select team_code from tivrteam where team_name ='二') 
1. 括号里的select语句的tivrteam表没有与外表tivr_pri_info有关联
2. 就算是在关联,可能是多个值,存在多个值就会报错

应该这样:
update tivr_pri_info  


set old=33, big_team_code= (select top 1 team_code from tivrteam where team_name ='二' and tivrteam.xxx=tivr_pri_info.xxx) 
, condemn_expire = 10.02, is_valid = 1, man_type_code=1
where pri_no = 101001252

 
其中xxx为关联字段

[解决办法]
引用:
关键就是这个"4444444444"字段不知道是哪来的,不会是“select team_code from tivrteam where team_name ='二”的返回值。
从SQL语句来看只有可能是上面所说的返回值么?

这可说不准,是哪条SQL报的错。得楼主自己调试才行。
#1.把字段改大些,换成BIGINT类型
#2.在你的代码:JGtoHJ.JGToHJ.backgroundWorker_trans_DoWork中找相关的SQL,可能出问题的表,可能出问题的字段及值,最后确定原因。

热点排行