这个存储过程用于检查任何用户都不能应用的日期验证离开同样的时间在同一时间段之前应用。这是正常工作。但是如果任何用户想要更新休假时间那么它就不能工作
如果用户之前申请休假- 2013年5月12日至2013年5月19日registerLeaveID(休假表中的唯一字段)为14。
如果用户想更新休假期限2013年5月14日至2013年5月16日相同的registerLeaveID则此存储过程比较新的休假date with this registerLeaveID(12) date also
如何停止使用registerleaveID日期检查日期验证
CREATE PROCEDURE dbo.Test
@startdate datetime,@enddate datetime,@Userid int ,@Registerid
AS
BEGIN
SELECT Count(*) FROM leave
WHERE
(
(UserID=@userid)
AND
(
(@startdate BETWEEN StartDate AND EndDate)
OR
(@enddate BETWEEN StartDate AND EndDate)
OR
(
(@startdate <= Startdate AND @enddate>=EndDate)
)
)
)
END
这可能会有帮助。
CREATE PROCEDURE Test
@startdate DATETIME, @enddate DATETIME, @Userid INT, @Registerid INT
AS
BEGIN
SELECT Count(*)
FROM leave
WHERE ((UserID = @userid)
AND ((@startdate BETWEEN StartDate AND EndDate)
AND (@Registerid <> Registerid)
OR (@enddate BETWEEN StartDate AND EndDate)
OR ((@startdate <= Startdate
AND @enddate >= EndDate))));
END
CREATE PROCEDURE usp_AddTestData_UsingExists
(
@Name varchar(50),
@Qualification varchar(50)
)
AS
DECLARE @Result int
BEGIN TRANSACTION
IF EXISTS
(
SELECT NULL
FROM
TestData WITH (UPDLOCK)
WHERE
[Name] = @Name AND
Qualification = @Qualification
)
BEGIN
SELECT @Result = -1
END
ELSE
BEGIN
INSERT INTO TestData
(
[Name],
Qualification
)
VALUES
(
@Name,
@Qualification
)
SELECT @Result = @@ERROR
END
IF @Result <> 0
BEGIN
ROLLBACK
END