在存储过程中,将根据在屏幕上输入的搜索条件(例如名字,姓氏,邮政编码,电子邮件等)从此表中获取数据。
在创建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
答案 0 :(得分:1)
您可以使用COALESCE代替动态查询
SELECT *
FROM [EmployeeDetails]
WHERE FirstName = COALESCE(@optionalParam1, FirstName) AND LastName = COALESCE(@optionalParam2, LastName)