日期:2014-05-17  浏览次数:20533 次

求教各位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