-- Batch 1: declare variables and initialize them
DECLARE @combined VARBINARY(16)
DECLARE @rowhash VARBINARY(16)
SELECT @combined = 0x0
GO
-- Batch 2: declare cursor (must be the only statement)
DECLARE @combined VARBINARY(16)
DECLARE @rowhash VARBINARY(16)
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))), '')
)
GO
-- Batch 3: initialize, open cursor, process rows
DECLARE @combined VARBINARY(16)
DECLARE @rowhash VARBINARY(16)
SELECT @combined = 0x0
OPEN row_cursor
FETCH row_cursor INTO @rowhash
WHILE (@@sqlstatus = 0)
BEGIN
SELECT @combined = @combined ^ @rowhash
FETCH row_cursor INTO @rowhash
END
CLOSE row_cursor
DEALLOCATE CURSOR row_cursor
GO
-- Batch 4: select the final checksum
DECLARE @combined VARBINARY(16)
SELECT CONVERT(VARCHAR(32), @combined, 2) AS table_checksum
GO
Top comments (0)