1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76
|
DECLARE @PROC_STATUS smallint,
@END bit,
@CELL_1 nvarchar(4000),
@CELL_2 nvarchar(4000),
@OFFSET int,
@RESULT varchar(20),
@SERVICE_INFO_ID int,
@LIMITER int,
@TIME datetime
DECLARE curTOS CURSOR FAST_FORWARD FOR
SELECT SERVICE_INFO_ID
FROM SERVICE_INFO
OPEN curTOS
FETCH NEXT FROM curTOS INTO @SERVICE_INFO_ID
WHILE @@FETCH_STATUS = 0
BEGIN
---
SET @LIMITER = 1
SET @END = 0
SET @RESULT = ''
SET @OFFSET = 1
WHILE @END <> 1 AND @LIMITER < 1000 --ARBITRARY LOOP LIMIT TO PREVENT ERROR
BEGIN
SELECT @CELL_1 = SUBSTRING(CONTENT, @OFFSET, 4000)
FROM SERVICE_INFO
WHERE SERVICE_INFO_ID = @SERVICE_INFO_ID
SELECT @CELL_2 = SUBSTRING(CONTENT, @OFFSET, 4000)
FROM SERVICE_INFO_CHANGES_TRACKING
WHERE SERVICE_INFO_ID = @SERVICE_INFO_ID
IF @CELL_1 <> @CELL_2 AND LEN(@CELL_2) > 0
BEGIN
SET @END = 1
SET @RESULT = 'DIFFERENT'
END
IF @END = 0
BEGIN
SET @OFFSET = @OFFSET + 4000
END
IF LEN(@CELL_1) = 0 AND @END = 0
BEGIN
SET @RESULT = 'SAME'
SET @END = 1
END
SET @LIMITER = @LIMITER + 1
END
IF @RESULT = 'SAME'
BEGIN
UPDATE SERVICE_INFO_CHANGES_TRACKING
SET LAST_CHECKED = @TIME,
DIFFERENT = 0
WHERE SERVICE_INFO_ID = @SERVICE_INFO_ID
END
ELSE
BEGIN
UPDATE SERVICE_INFO_CHANGES_TRACKING
SET LAST_CHECKED = @TIME,
DIFFERENT = 1
WHERE SERVICE_INFO_ID = @SERVICE_INFO_ID
END
---
FETCH NEXT FROM curTOS INTO @SERVICE_INFO_ID
END
CLOSE curTOS
DEALLOCATE curTOS |
Partager