目前正在审核@return_count
为参数的存储过程。下面是传递NULL
时我可以设置其值的两种方式的独立示例。
无法确定查询优化器是否会将它们视为相同,或者一种方法是否优于另一种方法。
DECLARE @return_count int
SET @return_count = null
IF @return_count is null
BEGIN
SELECT @return_count = 10
END
GO
DECLARE @return_count int
SET @return_count = null
BEGIN
SELECT @return_count = 10
WHERE @return_count is null
END
答案 0 :(得分:7)
您可能需要考虑
SELECT @return_count = ISNULL(@return_count, 10)
答案 1 :(得分:2)
他们返回不同的执行计划,而前者则相当复杂。后者涉及过滤和扫描操作。由于看起来这不需要扩展,我会选择前者。
答案 2 :(得分:1)
您的存储过程似乎可以使用可选参数@return_count。如果是这种情况,那么您可以直接表达为
CREATE PROCEDURE myStoredProc
@return_count int = 10
AS
BEGIN
.... my logic
END