![](/img/trans.png)
[英]SQL Server: how to get a database name as a parameter in a stored procedure
[英]How to get around date parameter in SQL Server stored procedure to get back all data
我目前正在使用getShifts
存储过程来获取前端 2 个独立功能的数据。 我的存储过程需要一个参数Selected Date
,它在传递日期时返回特定日期的记录。
我正在尝试为我的一项功能绕过ShiftDate
参数,并将其用作获取全部功能。 有没有办法将假日期传递给存储过程以接收所有记录?
BEGIN
SELECT
n.ID, n.ID, m.SearchFullNameFL as ProfileName, n.SchedID,
s.LicenseID, f.ID as UnitID, f.UnitName,
n.Hours, s.ShiftDate, s.SchedShiftID, ss.Description as SchedShift,
ss.Hours as SchedShiftHours, t.ID as TransactionTypeId,
(SELECT COUNT(b.ID)
FROM Sched b
INNER JOIN Ref_SchedShift ss ON ss.ID = b.SchedShiftID AND ss.DSN > 0
WHERE b.ExpiredBy = 0 AND b.ShiftDate = @ShiftDate -->= @StartDate
AND b.EndDate <= @EndDate
AND b.FacUnitID IN (SELECT Id FROM FacUnit
WHERE FacilityID = @FacilityID)
AND b.ID = s.ID) AS ShiftsWorked,
n.OverTimeReasonTypeID, n.Comment, n.Ref_NoLunchID as NoLunchID,
nl.NoLunchType
FROM
NewClockIns n
INNER JOIN
Members m ON m.ID = n.ID
INNER JOIN
Sched s ON s.ID = n.SchedID AND s.ExpiredBy = 0
INNER JOIN
Ref_Method rm ON n.Ref_MethodID = rm.ID
INNER JOIN
Ref_ClockTransactionType t ON t.ID = n.Ref_ClockTransID
INNER JOIN
FacUnit f ON f.ID = n.FacUnitID
INNER JOIN
Ref_License l ON l.ID = s.LicenseID
INNER JOIN
Ref_SchedShift ss ON ss.Id = s.SchedShiftID
LEFT JOIN
Ref_NoLunch nl ON nl.ID = n.Ref_NoLunchID
WHERE
s.ShiftDate = @ShiftDate-->= @StartDate
AND s.EndDate <= @EndDate
AND s.ClockInsAgencyApprovedByID > 0
AND ((@IsApproved = 1 AND s.ClockInsFacilityApprovedByID > 0)
OR
(@IsApproved = 0 AND s.ClockInsFacilityApprovedByID = 0))
AND f.Id IN (SELECT ID FROM @UnitIDList)
AND n.ExpiredBy = 0
END
你在找or
?
(s.ShiftDate = @ShiftDate or @ShiftDate is null)
然后可以传入NULL
并忽略过滤器。
尝试这个:-
ShiftDate =(Case When @IsApproved = 1 Then @ShiftDate Else null End)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.