我遇到了一个有趣的存储过程,我需要你的帮助来解决这个问题。SQL Server 2005 - 比较字符列与int
基本上,存储过程SELECT
s的WHERE
条件,其中的条件是:
WHERE SomeType = 2
SomeType
是char(3)
柱,其中包含像'1','2','AA','AB'
值等
当我运行在存储过程中SSMS,它失败:
Msg 245,Level 16,State 1,Line 1
将varchar值“AA”转换为数据类型为int的列的语法错误。
但是,当我通过生产中的应用程序使用该存储过程时,它返回的数据没有任何问题。
我的问题是,这怎么可能?
处理存储过程的错误处理将是最可能的解释。不要原谅它的错误代码(一个简单的'CAST',或者用引号将'2'修复就可以修复它) – hkf 2012-04-18 06:57:46
是的,正好......'2'应该工作。在SomeType = – Milee 2012-04-18 07:02:52
我知道这是一个不好的编码,它会被'2'等修复,但它没有任何意义,SP在SSMS失败,但成功的应用程序使用此SP。 – James 2012-04-18 07:07:37