【发布时间】:2013-05-22 06:56:46
【问题描述】:
在这个存储过程中,在 where 条件下,如果 @startDate 和 @EndDate 值为 null,那么如何使用 COALESCE 处理它。
CREATE PROCEDURE dbo.SP_ManageLeaveSearch
@StartDate datetime,
@EndDate datetime,
@UserName CHAR(100),
@MarketID INT
AS
BEGIN
SELECT d1.UserName,c1.HouseName,c.StartDate,c.EndDate
FROM table1 c
Inner JOIN table2 d1 ON c.UserID = d1.UserID
WHERE
(
(
(@StartDate BETWEEN StartDate AND EndDate)
OR
(@EndDate BETWEEN StartDate AND EndDate)
OR
(
(@StartDate <= Startdate AND @EndDate>=EndDate)
)
)
AND
(
d1.UserName = COALESCE(@UserName, d1.UserName)
)
)
END
提前问好。
【问题讨论】:
-
附注:您应该不为您的存储过程使用
sp_前缀。微软有reserved that prefix for its own use (see Naming Stored Procedures),你确实会在未来某个时候冒着名称冲突的风险。 It's also bad for your stored procedure performance。最好只是简单地避免sp_并使用其他东西作为前缀 - 或者根本不使用前缀!
标签: c# asp.net sql-server stored-procedures