【发布时间】:2021-10-11 20:17:13
【问题描述】:
我有几个搜索存储过程(按 EmpName、按 EmpCode、按部门),
按名称搜索:
ALTER PROCEDURE [dbo].[spEmployee_SearchByName]
@EmpName nvarchar(100)
AS
BEGIN
SELECT *
FROM Employee
WHERE EmployeeName like '%'+ @EmpName +'%'
END
按 EmpID 搜索:
ALTER PROCEDURE [dbo].[spEmployee_SearchByID]
@EmpID nvarchar(200)
AS
BEGIN
SELECT *
FROM Employee
WHERE EmployeeID like '%'+ @EmpID +'%'
END
按部门搜索(我使用 C# 中的组合框来获取此值):
ALTER PROCEDURE [dbo].[spEmployee_SearchByName]
@EmpDepartment nvarchar(100)
AS
BEGIN
SELECT *
FROM Employee
WHERE EmployeeDepartment like '%'+ @EmpDepartment +'%'
END
我正在使用 Microsoft SQL Server。
应用程序:
我的 c# 应用有 3 个搜索选项、2 个文本框(EmpName 和 EmpCode)和 1 个组合框(部门)。
我如何使用搜索选项:
首先,我将按部门对表格进行排序,然后输入一些 EmpCode,例如 16xxxx。它将显示 200 个插入的部门和 EmpCode 的结果,然后我将按 EmpName 缩小范围。另外,我可以先用 EmpName 对表格进行排序,然后是 Department,然后是 EmpCode。
问题:
假设,我首先使用 Department 对表进行排序,然后是 EmpName 和 EmpCode。当我清除 EmpName(Department 和 EmpCode 保留)时,它应该清除 EmpName 的搜索并将结果返回为仅对 Department 和 EmpCode 进行排序,但它没有。它给了我一个随机的结果。此外,当我清除/清空 3 个搜索选项时,它也会给我一个随机结果。
当我尝试使用 AND 将所有这些搜索 SP 合并到一个 SP 时出现问题,例如:
SELECT *
FROM Employee
WHERE EmployeeDepartment like '%'+ @EmpDepartment +'%' AND EmployeeName like '%'+ @EmpName +'%' AND EmployeeID like '%'+ @EmpID +'%'
将所有这些搜索 SP 组合到一个存储过程的正确方法是什么?
【问题讨论】:
-
我已经编辑了我的问题
标签: c# sql sql-server search stored-procedures