1. SQL / Говнокод #4021

    −866

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    ALTER PROCEDURE [dbo].[spSearch]                  
    	@Name nvarchar(256)
    AS                  
    BEGIN                  
     SET NOCOUNT ON                  
                       
    	DECLARE @qry VARCHAR(MAX)
    	DECLARE @Where VARCHAR(1000)                                
    	              
    	SET @Where = '1=1'                  
            
    	IF ISNULL(@Name,'') <> ''                  
    	BEGIN                  
    		SET @Where = @Where + ' and a.Name = ''' + @Name + ''''                  
    	END      
    
    SET @Where = @Where + ' and a.Active = 1'     
          
    	SET @qry ='    
    select a.* from t_Table1 a   
    	WHERE ' + @Where     + 
     ' order by a.Name'
    
    	EXECUTE (@qry)                  
                       
    END

    Запостил: zheka, 18 Августа 2010

    Комментарии (5) RSS

    • А оно хоть работает? В смысле, EXECUTE() как-то возвращает запись?
      Ответить
    • IF @Name IS NULL
      select a.* from t_Table1 a WHERE a.Active = 1 order by a.Name
      ELSE 
      select a.* from t_Table1 a WHERE a.Name =@Name and a.Active = 1 order by a.Name
      Ответить
      • select a.* 
        from t_Table1 a 
        WHERE (@Name is NULL or a.Name = @Name) and a.Active = 1 
        order by a.Name
        Ответить
    • vanished
      Ответить

    Добавить комментарий