DEV Community

Query Filter
Query Filter

Posted on

syb14

-- Batch 1: declare cursor (must be alone)
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 2: declare variables, open cursor, process
DECLARE @rowhash VARBINARY(16)
DECLARE @rowhash_hex VARCHAR(32)
DECLARE @combined_str VARCHAR(8000)
SELECT @combined_str = ''

OPEN row_cursor
FETCH row_cursor INTO @rowhash

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

CLOSE row_cursor
DEALLOCATE CURSOR row_cursor
GO

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

Top comments (0)