Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 在存储过程中传递多个参数搜索数据的最佳方法_Sql Server_Tsql_Stored Procedures_Sql Server 2014 - Fatal编程技术网

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

Sql server 在存储过程中传递多个参数搜索数据的最佳方法,sql-server,tsql,stored-procedures,sql-server-2014,Sql Server,Tsql,Stored Procedures,Sql Server 2014,在存储过程中,根据屏幕上输入的搜索条件(如姓名、姓氏、邮政编码、电子邮件等)从此表中获取数据 创建SP时,假定用户一次可以按任何一个或多个条件进行搜索,SP应返回所有相关结果。这应该在不使用动态查询字符串形成技术的情况下完成 请提供在具有多个参数的表中搜索的最佳方式 下面是我的代码,让我知道这是最好的搜索方式 declare @optionalParam1 NVARCHAR(50)='Anil', @optionalParam2 NVARCHAR(50)='sing' DECLARE

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

创建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

您可以使用合并,而不是使用动态查询

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

您可能需要在“sql厨房水槽查询”上进行一些搜索。关于如何优化这类过程,已经有很多优秀的文章发表了。SQL Server世界的知名人士对这一问题进行了大量的研究,仅举了三个例子。做你的调查。嗨,伙计们,我不知道为什么给别人我的问题。。。。