Dynamic Filters in SQL Server
I would re-write the whole proc something like this.....

ALTER PROCEDURE Member_WS
    @Program        int             = NULL,
    @Card           nvarchar(30)    = '',
    @Account        nvarchar(128)   ='',
    @Member         bigint          = NULL,
    @Email          nvarchar(256)   ='',
    @Phone          nvarchar(20)    ='', 
    @ResponseType   nvarchar(100)   ='',
    @FirstName      nvarchar(100)   =''
AS
BEGIN
  SET NOCOUNT ON;
    DECLARE @sql nvarchar(max);

set @sql = N' SELECT * FROM TableName WHERE 1 = 1 ' --&lt;-- for example your main query
         + CASE WHEN @Program IS NOT NULL 
           THEN N' AND [Program].ProgramID =  @Program ' ELSE N' ' END
          + CASE WHEN @FirstName &lt;&gt; ''
           THEN N' AND [member].FirstName = @FirstName ' ELSE N' ' END
          + CASE WHEN  @Card &lt;&gt; ''
            THEN N' and [account].IIN + REPLICATE(0, (8 - len (LS001..[account].AccountNumber))) 
                   + ltrim(str(LS001..[account].AccountNumber)) 
                   +  ltrim(str(LS001..[account].verificationDigitSufix))= @Card ' ELSE N' ' END
          + CASE WHEN @Account &lt;&gt; ''
            THEN N' and [Account].AccountID = @Account '  ELSE N' ' END
          + CASE WHEN @Member IS NOT NULL 
            THEN N' and [member].MemberID = @Member' ELSE N' ' END
          + CASE WHEN @Email &lt;&gt; ''
            THEN N' and [user].email=  @email ' ELSE N' ' END
          + CASE WHEN @Phone &lt;&gt; ''
            THEN N' and [user].PhoneNumber = @Phone ' ELSE N' ' END

Exec sp_executesql @sql
                  ,N'@Program int , @Card nvarchar(30), @Account nvarchar(128)
                  ,@Member bigint , @Email nvarchar(256), @Phone nvarchar(20)
                  ,@FirstName nvarchar(100)'
                  ,@Program
                  ,@Card
                  ,@Account 
                  ,@Member
                  ,@Email 
                  ,@Phone
                  ,@FirstName


END