T-SQL存储过程NULL输入值导致select语句失败
发布时间:2020-12-12 07:44:29 所属栏目:MsSql教程 来源:网络整理
导读:下面是一个存储过程,用于根据单独检查所有字段来检查数据库中是否存在重复条目(不要问为什么我应该这样做,它只需要这样). 听起来非常简单,但SP失败了. 问题是传递给SP的一些参数可能具有空值,因此sql应该读为“is null”而不是“= null”. 我已尝试使用exec()
下面是一个存储过程,用于根据单独检查所有字段来检查数据库中是否存在重复条目(不要问为什么我应该这样做,它只需要这样).
听起来非常简单,但SP失败了. CREATE PROCEDURE sp_myDuplicateCheck @userId int,@noteType char(1),@aCode char(3),@bCode char(3),@cCode char(3),@outDuplicateFound int OUT AS BEGIN SET @outDuplicateFound = (SELECT Top 1 id FROM codeTable WHERE userId = @userId AND noteType = @noteType AND aCode = @aCode AND bCode = @bCode AND cCode = @cCode ) -- Now set the duplicate output flag to a 1 or a 0 IF (@outDuplicateFound IS NULL) OR (@outDuplicateFound = '') OR (@outDuplicateFound = 0) SET @outDuplicateFound = 0 ELSE SET @outDuplicateFound = 1 END 解决方法对于每个可能为null的参数,我认为你需要这样的东西:AND (aCode = @aCode OR (aCode IS NULL AND @aCode IS NULL)) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |