C# 存储过程日期验证不检查特定ID的现有日期
此存储过程用于检查任何用户都无法应用的日期验证 离开的时间与 在同一时间段中应用上一个。 这是正常工作。 但是,如果任何用户想要更新休假期限,那么它就无法工作 如用户之前申请休假-2013年5月12日至2013年5月19日 而在leave表中唯一的字段registerLeaveId是14 如果用户希望更新2013年5月14日至213年5月16日的休假期限 相同的registerLeaveID然后此存储过程比较新的leave 此注册表的日期leaveID12日期也是 如何停止以不使用registerleaveID日期检查日期验证C# 存储过程日期验证不检查特定ID的现有日期,c#,asp.net,sql,sql-server,stored-procedures,C#,Asp.net,Sql,Sql Server,Stored Procedures,此存储过程用于检查任何用户都无法应用的日期验证 离开的时间与 在同一时间段中应用上一个。 这是正常工作。 但是,如果任何用户想要更新休假期限,那么它就无法工作 如用户之前申请休假-2013年5月12日至2013年5月19日 而在leave表中唯一的字段registerLeaveId是14 如果用户希望更新2013年5月14日至213年5月16日的休假期限 相同的registerLeaveID然后此存储过程比较新的leave 此注册表的日期leaveID12日期也是 如何停止以不使用registe
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