27,579
社区成员
发帖
与我相关
我的任务
分享
select * from tb1 where 1=1 and isnull(nullif(@a,''),id)=id
CREATE TABLE tb1 ( id INT, col1 VARCHAR(10) )
INSERT tb1
SELECT 1 ,
'AAAAA'
UNION ALL
SELECT 2 ,
'BBBBB'
UNION ALL
SELECT 3 ,
'CCCCC'
UNION ALL
SELECT 4 ,
'DDDDD'
DECLARE @a INT
SET @a = 3
IF @a IS NOT NULL
OR @a <> ''
SELECT *
FROM tb1
WHERE 1 = 1
AND id = @a
ELSE
SELECT *
FROM tb1
WHERE 1 = 1
DROP TABLE tb1
CREATE PROCEDURE [dbo].ParameterSniffTest
(
@p_CustomerId int,
@p_Status int,
@p_FromDate datetime,
@p_ToDate datetime
)
AS
BEGIN
SET NOCOUNT ON
DECLARE
@Parm NVARCHAR(MAX),
@sqlcommand NVARCHAR(MAX) = N''
SET @sqlcommand = 'SELECT * FROM ParameterSniffProblem WHERE 1=1'
IF(@p_CustomerId IS NOT NULL)
SET @sqlcommand = CONCAT(@sqlcommand,'AND CustomerId=@p_CustomerId ')
IF(@p_Status IS NOT NULL)
SET @sqlcommand = CONCAT(@sqlcommand,'AND OrederStatus=@p_Status ')
IF(@p_FromDate IS NOT NULL)
SET @sqlcommand = CONCAT(@sqlcommand,'AND CreateDate>=@p_FromDate ')
IF(@p_ToDate IS NOT NULL)
SET @sqlcommand = CONCAT(@sqlcommand,'AND CreateDate<=@p_ToDate ')
SET @Parm= '@p_CustomerId int,
@p_Status int,
@p_FromDate datetime,
@p_ToDate datetime '
EXEC sp_executesql @sqlcommand,@Parm,
@p_CustomerId = @p_CustomerId,
@p_Status = @p_Status,
@p_FromDate = @p_FromDate,
@p_ToDate = @p_ToDate
END
GO
建议动态sqlselect * from tb1 where id=@a OR ISNULL(@a,'')=''