Параметр T- SQL передает хранимую процедуру в предложение Where, только если он указан - PullRequest
1 голос
/ 19 июня 2020

Я пишу хранимую процедуру T- SQL. Я хочу «установить» переменную так, чтобы если параметр, он передавался в предложение 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)

Ответы [ 2 ]

1 голос
/ 19 июня 2020

Можно просто написать:

Company = @CompandyCode OR @CompanyCode IS NULL
1 голос
/ 19 июня 2020

Да, это должно сработать.

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