参数 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
我正在编写一个 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