-- Batch 1: Declare variables
DECLARE @combined VARBINARY(16)
DECLARE @rowhash VARBINARY(16)
SELECT @combined = 0x0
GO
-- Batch 2: Declare cursor (must be standalone)
DECLARE row_cursor CURSOR FOR
SELECT HASHBYTES('MD5',
ISNULL(LTRIM(RTRIM(CONVERT(VARCHAR(255), INTERNINSTID))), '') +
ISNULL(LTRIM(RTRIM(CONVERT(VARCHAR(255), INTERNVERSION))), '') +
ISNULL(LTRIM(RTRIM(CONVERT(VARCHAR(255), INTERNTIMESTAMP))), '') +
ISNULL(LTRIM(RTRIM(CONVERT(VARCHAR(255), INTERNRECTYPE))), '') +
ISNULL(LTRIM(RTRIM(CONVERT(VARCHAR(255), INTERNFIXSTRING))), '') +
ISNULL(LTRIM(RTRIM(CONVERT(VARCHAR(255), ORDERID))), '') +
ISNULL(LTRIM(RTRIM(CONVERT(VARCHAR(255), ACCOUNT))), '') +
ISNULL(LTRIM(RTRIM(CONVERT(VARCHAR(255), MERGEID))), '') +
ISNULL(LTRIM(RTRIM(CONVERT(VARCHAR(255), PARENTORDERID))), '') +
ISNULL(LTRIM(RTRIM(CONVERT(VARCHAR(255), SALESPERSONID))), '') +
ISNULL(LTRIM(RTRIM(CONVERT(VARCHAR(255), SYMBOL))), '') +
ISNULL(LTRIM(RTRIM(CONVERT(VARCHAR(255), EXPIREDATE))), '') +
ISNULL(LTRIM(RTRIM(CONVERT(VARCHAR(255), EXPIRETIME))), '') +
ISNULL(LTRIM(RTRIM(CONVERT(VARCHAR(255), LEAVESQTY))), '') +
ISNULL(LTRIM(RTRIM(CONVERT(VARCHAR(255), TIMEINFORCE))), '')
)
FROM CacheCplsOrder
GO
-- Batch 3: Open cursor and process rows
OPEN row_cursor
FETCH row_cursor INTO @rowhash
WHILE @@FETCH_STATUS = 0
BEGIN
SELECT @combined = @combined ^ @rowhash
FETCH row_cursor INTO @rowhash
END
CLOSE row_cursor
DEALLOCATE CURSOR row_cursor
GO
-- Batch 4: Output final checksum
SELECT CONVERT(VARCHAR(32), @combined, 2) AS table_checksum
GO
Top comments (0)