存储过程中的错误,但手动运行时没有错误
问题描述:
我有一个存储过程,它创建一个xml文件。当我运行它,我得到一个错误转换为varchar值“这里一些文字”时存储过程中的错误,但手动运行时没有错误
转换失败为int
如果我把相同的代码在查询窗口在SSMS并执行,它工作正常 - 没有错误。
有人可以告诉我为什么会发生这种情况?这个过程足够长,可以在这里发布,它主要是一个有很多联合和联接的巨大选择。
谢谢!
答
连接之一列中的某处将varchar与整数进行比较,并且至少有一个varchar值不是整数。
所以请尝试以下测试:
select *
from table
where myCol NOT LIKE '%[^0-9]%'
也许
select *
from table
where CONVERT (bigint, myCol) NOT BETWEEN -2147483648 AND 2147483647
撼树,看看脱落。
好像你的字符串不是有效号码 – lordkain
的确如此,事实并非如此。但为什么在手动运行时不会抛出错误? – user6678202
错误信息非常清楚。你显然使用一个字符串,并把它看作一个数字。这很可能是一种隐含的转换。也许如果你能分享这个程序,至少我们可以提供帮助。现在,任何人都无法提供帮助。 –