DEV Community

Query Filter
Query Filter

Posted on

syb13

-- Batch 1: declare variables
DECLARE @rowhash VARBINARY(16)
DECLARE @combined_str VARCHAR(8000)
SELECT @combined_str = ''
GO

-- Batch 2: declare cursor
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: process cursor and concatenate row hashes
DECLARE @rowhash_hex VARCHAR(32)
OPEN row_cursor
FETCH row_cursor INTO @rowhash

WHILE (@@sqlstatus = 0)
BEGIN
SELECT @rowhash_hex = CONVERT(VARCHAR(32), @rowhash, 2)
SELECT @combined_str = @combined_str + @rowhash_hex
FETCH row_cursor INTO @rowhash
END

CLOSE row_cursor
DEALLOCATE CURSOR row_cursor
GO

-- Batch 4: compute final table checksum
SELECT CONVERT(VARCHAR(32), HASHBYTES('MD5', @combined_str), 2) AS table_checksum
GO

Top comments (0)