繁体   English   中英

WHERE子句中的SQL Server存储过程动态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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM