在SQL Server 2005数据库上,一直在工作的存储过程开始失败。在存储过程中下面的语句被确定为故障的原因:没有任何行的UPDATE语句失败
update d set
d.location=a.[Name]+'-'+cast(a.lLocaId as varchar)
--select d.logical_name,d.location,a.[Name]+'-'+cast(a.lLocaId as varchar) as location
from hpsmp.dbo.device2m1 d
inner join hpsmp.dbo.locm1 s
on d.location=s.location
inner join hpamp.dbo.amLocation a
on s.location_code=a.lLocaId
where isnumeric(s.location_code)=1
and s.location_name<>a.[Name];
该错误消息是
消息8152,级别16,状态2,行1 字符串或二进制数据将是截断。 该声明已被终止。
这个错误的奇怪之处在于select语句没有返回任何行。为什么在没有任何行的更新语句中会出现截断错误?这张桌子上没有触发器。
与你的问题无关,但值得注意的是:你有没有试过运行'SELECT IsNumeric('1e6')'? – 2014-09-25 21:38:23
你确定你是'select'语句不返回任何结果?这个小提琴可以工作(http://sqlfiddle.com/#!3/8f26d1/1),但是如果你删除'where'标准,它会导致截断错误。 – sgeddes 2014-09-25 21:41:47
'select IsNumeric('1e6')'returns 1 – 2014-09-26 13:43:53