• set ANSI_NULLS ON

    set QUOTED_IDENTIFIER ON

    go

    -- =============================================

    -- Author:<Author,,Name>

    -- Create date: <Create Date,,>

    -- Description:<Description,,>

    -- =============================================

    ALTER PROCEDURE [dbo].[SearchBiography]

    @firstname nvarchar(50),

    @middlename nvarchar(50),

    @lastname nvarchar(50),

    @sexID nchar(5) = NULL,

    @statusID nchar(5) = NULL

    AS

    BEGIN

    SET NOCOUNT ON;

    DECLARE @sqlquery nvarchar(max) , @SqlParam nvarchar(max)

    SET @sqlquery = ''

    SELECT @sqlquery = ' SELECT * ' + ' FROM TestMyView WHERE 1 = 1 '

    IF @sexID <> '0'

    SELECT @sqlquery = @sqlquery + ' AND sexID = @xsexID '

    IF @statusID <> '0'

    SELECT @sqlquery = @sqlquery + ' AND statusID = @xstatusID '

    IF LEN(@firstname) > 0

    SELECT @sqlquery = @sqlquery + ' AND firstname LIKE ''%'' + @xfirstname + ''%'' '

    IF LEN(@middlename) > 0

    SELECT @sqlquery = @sqlquery + ' AND middlename LIKE ''%'' + @xmiddlename + ''%'' '

    IF LEN(@lastname) > 0

    SELECT @sqlquery = @sqlquery + ' AND lastname LIKE ''%'' + @xlastname + ''%'' '

    SELECT @SqlParam = '@xfirstname nvarchar(50),

    @xmiddlename nvarchar(50),

    @xlastname nvarchar(50),

    @xsexID nchar(1),

    @xstatusID nchar(1) '

    EXEC sp_executesql @sqlquery,@SqlParam,

    @xfirstname = @firstname, @xmiddlename = @middlename,

    @xlastname = @lastname, @xsexID = @sexID,

    @xstatusID = @statusID

    END

    by reference to : http://www.sommarskog.se/dyn-search-2005.html and http://www.sommarskog.se/dynamic_sql.html