SQL WHERE 子句中的服务器存储过程动态 SQL
SQL Server stored procedure dynamic SQL in WHERE clause
我写了一个接受一个参数的存储过程。
Request_ID int = 0
稍后,在我的 WHERE
子句中,我需要完成以下操作。
我不知道如何描述它,但你可以看到我试图用这个完全编造的伪代码做什么:
WHERE isNull(a.Target_Department, '') <> ''
AND isNull(a.Resolved_Date, '') = ''
AND isNull(c.Request_Archived, '') <> 'Y'
AND IF @Request_ID = 0
THEN Request_ID > 0
ELSE Request_ID = @Request_ID
END
基本上,如果提供了特定的 request_ID
,我希望 WHERE
子句缩小到仅那个特定的 Request_ID
。不然我都要了
关于如何实现这个的任何想法?
试试这个 -->
WHERE
(@Request_ID IS NULL OR Request_ID=@RequestID)
或
WHERE
(@Request_ID=0 OR Request_ID=@RequestID)
and isnull(nullif(@RequestId,0),RequestId)=RequestId
我写了一个接受一个参数的存储过程。
Request_ID int = 0
稍后,在我的 WHERE
子句中,我需要完成以下操作。
我不知道如何描述它,但你可以看到我试图用这个完全编造的伪代码做什么:
WHERE isNull(a.Target_Department, '') <> ''
AND isNull(a.Resolved_Date, '') = ''
AND isNull(c.Request_Archived, '') <> 'Y'
AND IF @Request_ID = 0
THEN Request_ID > 0
ELSE Request_ID = @Request_ID
END
基本上,如果提供了特定的 request_ID
,我希望 WHERE
子句缩小到仅那个特定的 Request_ID
。不然我都要了
关于如何实现这个的任何想法?
试试这个 -->
WHERE
(@Request_ID IS NULL OR Request_ID=@RequestID)
或
WHERE
(@Request_ID=0 OR Request_ID=@RequestID)
and isnull(nullif(@RequestId,0),RequestId)=RequestId