【发布时间】:2008-12-19 12:53:27
【问题描述】:
下面是一个存储过程,用于根据单独检查所有字段来检查数据库中是否存在重复条目(不要问我为什么要这样做,它只是必须这样)。
这听起来很简单,但是 SP 失败了。 问题是传递给 SP 的某些参数可能具有 null 值,因此 sql 应该读取“is null”而不是“= null”。 我用 exec() 和 sp_executesql 尝试了 isnull()、case 语句、coalesce() 和动态 sql,但未能实现其中任何一个。这是代码...
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
【问题讨论】:
标签: sql tsql stored-procedures parameters null