我有一个SP,如下所示。
CREATE PROCEDURE CHKIndex
@count DECIMAL(10,2) ,
@ID INT = NULL,
@DATE VARCHAR (MAX)
AS
SELECT DISTINCT
COL1,
COL2
FROM
(
SELECT COL1,COL2,rn
FROM TAB1 T1
INNER JOIN TAB2 T2 ON T1.SNO = T2.PNO
)t
where t.rn = 1
AND DATE = @DATE
AND t.ID = @ID
GO
当我按EXEC CHKIndex 20,71,22082016
当我为所有三个参数
提供值时工作正常但 如果没有提供任何日期值
,则开始给出错误过程或函数'uspECP_Competitive_Index'需要参数'@DATE',这是未提供的。
我试图以这样的方式修改:如果用户想要仅基于@count和@ID查看数据 他们能够这样做。
如果为@date分配默认NULL,甚至不在输出中获取任何记录。
请建议。
答案 0 :(得分:1)
快速而肮脏的方法可能是将where子句修改为:
WHERE
t.rn = 1
AND DATE = ISNULL(@DATE, DATE)
AND t.ID = @ID
其他几点要注意