存储过程中的错误,但手动运行时没有错误

存储过程中的错误,但手动运行时没有错误

问题描述:

我有一个存储过程,它创建一个xml文件。当我运行它,我得到一个错误转换为varchar值“这里一些文字”时存储过程中的错误,但手动运行时没有错误

转换失败为int

如果我把相同的代码在查询窗口在SSMS并执行,它工作正常 - 没有错误。

有人可以告诉我为什么会发生这种情况?这个过程足够长,可以在这里发布,它主要是一个有很多联合和联接的巨大选择。

谢谢!

+0

好像你的字符串不是有效号码 – lordkain

+0

的确如此,事实并非如此。但为什么在手动运行时不会抛出错误? – user6678202

+0

错误信息非常清楚。你显然使用一个字符串,并把它看作一个数字。这很可能是一种隐含的转换。也许如果你能分享这个程序,至少我们可以提供帮助。现在,任何人都无法提供帮助。 –

连接之一列中的某处将varchar与整数进行比较,并且至少有一个varchar值不是整数。

所以请尝试以下测试:

select * 
    from table 
    where myCol NOT LIKE '%[^0-9]%' 

也许

select * 
    from table 
    where CONVERT (bigint, myCol) NOT BETWEEN -2147483648 AND 2147483647 

撼树,看看脱落。