在存储过程中传递多个参数来搜索数据的最佳方法

时间:2019-07-04 13:05:53

标签: sql-server tsql stored-procedures sql-server-2014

在存储过程中,将根据在屏幕上输入的搜索条件(例如名字,姓氏,邮政编码,电子邮件等)从此表中获取数据。

在创建SP时,

假定用户可以一次按一个或多个条件进行搜索,并且SP应返回所有相关结果。应该在不使用动态查询字符串形成技术的情况下完成此操作。

能否请您提供在多个参数表中进行搜索的最佳方法。

下面的代码,让我知道这是最好的搜索方式,

declare @optionalParam1 NVARCHAR(50)='Anil', @optionalParam2 NVARCHAR(50)='sing'

    DECLARE @SQL NVARCHAR(MAX)       

SET @SQL = N'SELECT * FROM [EmployeeDetails] WHERE 1 = 1'

IF @OptionalParam1 IS NOT NULL        
    BEGIN        
        SET @SQL = @SQL + N' AND FirstName = @optionalParam1'    
    END        

IF @OptionalParam2 IS NOT NULL        
    BEGIN        
        SET @SQL = @SQL + N' AND LastName = @optionalParam2'    
    END        

EXEC sp_executesql @SQL,        
    N'@optionalParam1 NVARCHAR(50),
      @optionalParam2 NVARCHAR(50)'
    ,@optionalParam1 
    ,@optionalParam2

1 个答案:

答案 0 :(得分:1)

您可以使用COALESCE代替动态查询

SELECT * 
FROM [EmployeeDetails] 
WHERE FirstName = COALESCE(@optionalParam1, FirstName) AND LastName = COALESCE(@optionalParam2, LastName)