0

inステートメントで動的WHERE句を作成しましたが、正常に作成されましたが、出力が 0 になっています。間違っているアイデアはありますか?SELECTStored ProcedureSQL SERVER 2008-R2.

ここに私の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
4

1 に答える 1

2

私が間違っているアイデアはありますか?

動的 SQL を作成したら、sp_executesqlを使用して実行する必要もあります。

これはあなたにとって興味深いものになると思います。T-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
于 2013-02-16T08:42:01.840 に答える