参数 T-SQL 存储过程仅在指定时传递给 Where 子句

Parameter T-SQL stored procedure pass to Where clause only when specified

我正在编写一个 T-SQL 存储过程。我想 "set" 一个变量,这样如果 一个参数,它被传递到 where 子句(自然)。

但是如果没有为该参数指定任何内容,我不希望将其传递给 where 子句。

原因是默认列表太长,我无法指定。

我该怎么做?

CREATE PROCEDURE Example
    (@CompanyCode AS NVARCHAR(100) = NULL)
AS 
    SET NOCOUNT ON;

    SELECT
        .....
    FROM 
        TableX
    WHERE 
        (@CompanyCode IS NOT NULL AND Company = @CompandyCode)
        OR 
        --  Does this work?
        (@CompanyCode IS NULL)

是的,应该可以。

WHERE @companyCode IS NULL OR (@companyCode IS NOT NULL AND Company = @companyCode)

你可以只写:

Company = @CompandyCode OR @CompanyCode IS NULL