Sql server 2008 r2 动态Where子句:不获取输出

Sql server 2008 r2 动态Where子句:不获取输出,sql-server-2008-r2,dynamic-sql,Sql Server 2008 R2,Dynamic Sql,我在SQL SERVER 2008-R2的存储过程的中的SELECT语句中创建了一个动态WHERE子句。它已成功创建,但我得到的输出为0。知道我错在哪里吗 这是我的SP: CREATE PROCEDURE [dbo].[SPData] @Id int = NULL, @Requester varchar(20) = NULL, @Suggester varchar(20) = NULL AS BEGIN DECLARE @sql nvarchar(4000) SELECT @sql=' [Id]

我在SQL SERVER 2008-R2的
存储过程的
中的
SELECT
语句中创建了一个动态
WHERE
子句。
它已成功创建,但我得到的输出为0。知道我错在哪里吗

这是我的SP:

CREATE PROCEDURE [dbo].[SPData]
@Id int = NULL,
@Requester varchar(20) = NULL,
@Suggester varchar(20) = NULL
AS
BEGIN
DECLARE @sql nvarchar(4000)
SELECT @sql=' [Id], [Suggester], [Requester] from CRM.dbo.Request_Table WHERE 1=1 '
If (@Id) IS NOT NULL
        SELECT @sql=@sql + ' AND Id=(@Id) '
If (@Suggester) IS NOT NULL
        SELECT @sql=@sql + ' AND Suggester like (@Suggester) '
If (@Requester) IS NOT NULL
        SELECT @sql=@sql + ' AND Requester like (@Requester) '
END
GO
知道我错在哪里吗

构建动态SQL之后,还必须使用

我相信你会感兴趣的

ALTER PROCEDURE [dbo].[SPData]
@Id int = NULL,
@Requester varchar(20) = NULL,
@Suggester varchar(20) = NULL
AS
BEGIN
DECLARE @sql nvarchar(4000)
SELECT @sql='SELECT [Id], [Suggester], [Requester] from CRM.dbo.Request_Table WHERE 1=1 '
If (@Id) IS NOT NULL
        SELECT @sql=@sql + ' AND Id=(@Id) '
If (@Suggester) IS NOT NULL
        SELECT @sql=@sql + ' AND Suggester like (@Suggester) '
If (@Requester) IS NOT NULL
        SELECT @sql=@sql + ' AND Requester like (@Requester) '

EXEC sp_executesql @sql, 
                   N'@id int, @Requester varchar(20), @Suggester varchar(20)', 
                   @Id, @Requester, @Suggester

END