【发布时间】:2017-11-03 15:30:09
【问题描述】:
我正在编写一个基于aspx页面文本框输入文本搜索数据库的存储过程。
这个存储过程运行良好,但我有一个问题。
有时@DeptName 和@DutyName 参数为空或null。
所以当参数值为空时,我想跳过或忽略 where 子句。但我对如何处理这种情况感到困惑。
请给我你的建议。
我的存储过程代码:
DECLARE
@CompanyCode varchar(20)
, @DeptName nvarchar(20)
, @DutyName nvarchar(20)
SELECT
@CompanyCode = 'h101'
, @DeptName = 'IT'
, @DutyName = 'Manager'
SELECT
U.ADDisplayName AS UserName
, LOWER(U.UserID) AS EmpID
, ISNULL(CPN.CompanyName, '') AS CompanyCode
, ISNULL(U.DisplayName_Eng, '') AS DisplayName_Eng
, ISNULL(DT.DisplayName, '') AS DeptName
, ISNULL(DTY.DutyName, '') AS DutyName
, ISNULL(U.CellPhone, '') AS CellPhone
, ISNULL(U.ExtensionNumber, '') AS ExtensionNumber
, ISNULL(U.FaxNumber, '') AS FaxNumber
, ISNULL(U.ChargeJob, '') AS ChargeJob
, ISNULL(LOC.LocationName, '') AS LocationName
, ISNULL(U.Workplace, '') AS Workplace
, ISNULL(U.EMail, '') AS EMail
FROM dbo.tb_User U
INNER JOIN dbo.tb_Dept DT
ON U.MainDeptCode = DT.DeptCode
INNER JOIN dbo.tb_Company CPN
ON U.CompanyCode = CPN.CompanyCode
INNER JOIN dbo.tb_Location LOC
ON U.LocationCode = LOC.LocationCode
AND U.CompanyCode = LOC.CompanyCode
AND U.GroupCode = LOC.GroupCode
AND U.DetailCode = loc.DetailCode
INNER JOIN dbo.tb_Duty DTY
ON U.DutyCode = DTY.DutyCode
AND U.CompanyCode = DTY.CompanyCode
AND U.GroupCode = DTY.GroupCode
AND U.DetailCode = DTY.DetailCode
WHERE U.CompanyCode = @companyCode
AND DT.DisplayName like '%' + @DeptName + '%'
AND DTY.DutyName like '%' + @DutyName + '%'
Order by DeptName desc
谢谢。
【问题讨论】:
标签: sql-server parameters where-clause