Лучший способ поиска данных с передачей нескольких параметров в хранимой процедуре - PullRequest
0 голосов
/ 04 июля 2019

В хранимой процедуре для извлечения данных из этой таблицы на основе критериев поиска, введенных на экране, таких как имя, фамилия, почтовый индекс, адрес электронной почты и т. Д. *

при создании 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 Ответ

1 голос
/ 07 июля 2019

Вместо использования динамического запроса Вы можете использовать COALESCE

SELECT * 
FROM [EmployeeDetails] 
WHERE FirstName = COALESCE(@optionalParam1, FirstName) AND LastName = COALESCE(@optionalParam2, LastName)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...