SET @vReturnTime =(SELECT ReturnTime FROM car_arrive_info where ListId = @iListId AND (ReturnTime IS NOT NULL AND ReturnTime<>''))
SET @iiSn =(SELECT SN FROM CAR_ARRIVE_INFO WHERE [email protected] AND [email protected])
IF EXISTS (SELECT ReturnTime FROM CAR_ARRIVE_INFO WHERE @vArriveTime < @vReturnTime AND ListId = @iListId AND SN <@iiSn )
BEGIN
UPDATE CAR_ARRIVE_INFO
SET ArriveTime = @vArriveTime,[email protected],State=1,OutTime = @vArriveTime
WHERE ListId = @iListId AND SN = @iSn AND State=0 AND SN <@iiSn AND @vArriveTime < @vReturnTime
END
IF EXISTS (SELECT ReturnTime FROM CAR_ARRIVE_INFO WHERE @vArriveTime > @vReturnTime AND ListId = @iListId AND SN >= @iiSn)
BEGIN
UPDATE CAR_ARRIVE_INFO
SET ArriveTime = @vArriveTime,[email protected],State=1,OutTime = @vArriveTime
WHERE ListId = @iListId AND SN = @iSn AND State=0 AND SN >[email protected] AND @vArriveTime >= @vReturnTime
END
------解决方案--------------------
SELECT TOP 1 @vReturnTime=ReturnTime
FROM DBO.car_arrive_info WITH(NOLOCK)
WHERE ListId = @iListId
AND (ReturnTime IS NOT NULL
AND ReturnTime <> '')
SELECT TOP 1 @iiSn=SN
FROM dbo.CAR_ARRIVE_INFO WITH(NOLOCK)
WHERE [email protected]
AND [email protected])
IF EXISTS (SELECT ReturnTime
FROM dbo.CAR_ARRIVE_INFO WITH(NOLOCK)
WHERE @vArriveTime < @vReturnTime
AND ListId = @iListId
AND SN <@iiSn )
BEGIN
UPDATE dbo.CAR_ARRIVE_INFO
SET ArriveTime = @vArriveTime
,[email protected]
,State=1
,OutTime = @vArriveTime
WHERE ListId = @iListId
AND SN = @iSn
AND State=0
AND SN <@iiSn
AND @vArriveTime < @vReturnTime
END
IF EXISTS (SELECT ReturnTime
FROM dbo.CAR_ARRIVE_INFO WITH(NOLOCK)
WHERE @vArriveTime > @vReturnTime
AND ListId = @iListId AND SN >= @iiSn)
BEGIN
UPDATE dbo.CAR_ARRIVE_INFO
SET ArriveTime = @vArriveTime
,[email protected]
,State=1
,OutTime = @vArriveTime
WHERE ListId = @iListId
AND SN = @iSn
AND State=0
AND SN >[email protected]
AND @vArriveTime >= @vReturnTime
END