Multiple Search Dynamic SQL-Query

  1. ALTER PROCEDURE [dbo].[Proc_Test] --@Division= '''A'',''B'',''C'''  
  2.     (  
  3.       @name VARCHAR(50) = NULL ,  
  4.       @hireDateFrom VARCHAR(50) = NULL ,  
  5.       @hireDateTo VARCHAR(50) = NULL ,  
  6.       @Country VARCHAR(50) = NULL ,  
  7.       @Salary INT = NULL ,  
  8.       @Division VARCHAR(50) = NULL  
  9.     )  
  10. AS  
  11.     BEGIN  
  12.   
  13.         DECLARE @WhrCls VARCHAR(5000)  
  14.         SET @WhrCls = ' WHERE 1=1 '  
  15. ------------------------------------------------------------------------------------------
  16.         IF ( ISNULL(@name'') <> '' )  
  17.             BEGIN   
  18.                 SET @WhrCls = @WhrCls + 'AND ISNULL(name,'''')=''' + @name  
  19.                     + ''''  
  20.             END   
  21. ------------------------------------------------------------------------------------------
  22.         IF ( ISNULL(@hireDateFrom, '') <> '' )  
  23.             BEGIN   
  24.                 SET @WhrCls = @WhrCls  
  25.                     + 'AND CONVERT(Date,CONVERT(VARCHAR,hireDate,1)) >= CONVERT(DATE,'''  
  26.                     + @hireDateFrom + ''')'  
  27.             END  
  28. ------------------------------------------------------------------------------------------
  29.         IF ( ISNULL(@hireDateTo, '') <> '' )  
  30.             BEGIN   
  31.                 SET @WhrCls = @WhrCls  
  32.                     + 'AND CONVERT(Date,CONVERT(VARCHAR,hireDate,1)) <= CONVERT(DATE,'''  
  33.                     + @hireDateTo + ''')'  
  34.             END  
  35. ------------------------------------------------------------------------------------------  
  36.         IF ( ISNULL(@Country, '') <> '' )  
  37.             BEGIN  
  38.                 SET @WhrCls = @WhrCls + 'AND Country LIKE ''%' + @Country  
  39.                     + '%'''  
  40.             END  
  41. ------------------------------------------------------------------------------------------- 
  42.         IF ( ISNULL(@Salary, '') <> '' )  
  43.             BEGIN   
  44.                 SET @WhrCls = @WhrCls + 'AND ISNULL(Salary,'''')=''' + @Salary  
  45.                     + ''''  
  46.             END  
  47. -------------------------------------------------------------------------------------------  
  48.         IF ( ISNULL(@Division, '') <> '' )  
  49.             BEGIN  
  50.                 SET @WhrCls = @WhrCls + ' AND Division IN(' + @Division + ') '  
  51.             END  
  52. -------------------------------------------------------------------------------------------
  53.   
  54.         DECLARE @Stmt VARCHAR(5000)  
  55.         SET @Stmt = 'SELECT    
  56.                      name ,  
  57.                      hireDate ,  
  58.                      CASE WHEN Country=''India'' THEN ''Hindustan''  
  59.                           WHEN Country=''UK'' THEN ''England''  
  60.                           WHEN Country=''USA'' THEN ''America''  
  61.                           WHEN Country=''Japan'' THEN ''Japanies''   
  62.                           END AS [Country],  
  63.                     Division,  
  64.                     Salary  
  65.          FROM dbo.Tbl_Emp ' + @WhrCls  
  66.   
  67.         PRINT ( @Stmt )  
  68.         EXEC(@Stmt)  
  69.     END