在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