Files
sql-scripts/OCTPDBA-352 - Anonymize data on 888 environments/Mélanger noms et prénoms.sql
Thierry Schork 7cf858256a initial commit
2022-12-30 12:10:12 +01:00

95 lines
3.0 KiB
Transact-SQL

USE [Arizona];
BEGIN TRANSACTION;
SET XACT_ABORT ON;
DECLARE
@mode INT = 2 /* 1 = SELECT / 2 = UPDATE */
,@cvRecordIDLowerLimit INT;
BEGIN TRY
SELECT @cvRecordIDLowerLimit = [bapd].[BAPD_value]
FROM [dbo].[Bmc_application_key] [bapk] (NOLOCK)
JOIN [dbo].[Bmc_application_default] [bapd] (NOLOCK)
ON [bapd].[BAPD_bmc_application_key] = [bapk].[Bmc_application_key_ID]
WHERE [bapk].[BAPK_key] = 'cvRecordIDLowerLimit';
CREATE TABLE [#temp_address] (
[Address_ID] INT
,[AD_last_name] VARCHAR(30)
,[ad_first_name] VARCHAR(30)
,[ad_name] VARCHAR(60)
,[ad_name_supplement] VARCHAR(255)
,[ad_vguid] UNIQUEIDENTIFIER
);
INSERT INTO [#temp_address] (
[Address_ID]
,[AD_last_name]
,[ad_first_name]
,[ad_name]
,[ad_name_supplement]
,[ad_vguid]
)
SELECT
[ad].[Address_ID]
,[ad].[AD_last_name]
,[ad].[AD_first_name]
,[ad].[AD_name]
,[ad].[AD_name_supplement]
,[ad].[AD_VGUID]
FROM [Arizona].[dbo].[Customer] [cust] (NOLOCK)
JOIN [Arizona].[dbo].[Address] [ad] (NOLOCK)
ON [ad].[Address_ID] = [cust].[CUST_address]
AND [ad].[Address_ID] >= @cvRecordIDLowerLimit;
UPDATE [t1]
SET
[t1].[AD_last_name] = [t2].[AD_last_name]
,[t1].[ad_name] = LEFT(ISNULL([t2].[AD_last_name], '') + ' ' + ISNULL([t1].[ad_first_name], ''), 60)
FROM [#temp_address] [t1] (NOLOCK)
JOIN [#temp_address] [t2] (NOLOCK)
ON [t2].[Address_ID] = (
SELECT TOP 1
[t3].[Address_ID]
FROM [#temp_address] [t3] (NOLOCK)
WHERE [t3].[Address_ID] > [t1].[Address_ID]
ORDER BY NEWID()
);
IF @mode = 2
BEGIN
UPDATE [ad]
SET
[ad].[AD_last_name] = [t1].[AD_last_name]
,[ad].[AD_name] = [t1].[ad_name]
FROM [#temp_address] [t1] (NOLOCK)
JOIN [dbo].[Address] [ad] (NOLOCK)
ON [ad].[Address_ID] = [t1].[Address_ID]
WHERE ISNULL([ad].[AD_last_name], '') <> ISNULL([t1].[AD_last_name], '')
OR ISNULL([ad].[AD_name], '') <> ISNULL([t1].[ad_name], '');
END
ELSE
BEGIN
SELECT --top 100
[ad].[AD_last_name]
,'-->'
,[t1].[AD_last_name]
,[ad].[AD_name]
,'-->'
,[t1].[ad_name]
FROM [#temp_address] [t1] (NOLOCK)
JOIN [dbo].[Address] [ad] (NOLOCK)
ON [ad].[Address_ID] = [t1].[Address_ID]
WHERE ISNULL([ad].[AD_last_name], '') <> ISNULL([t1].[AD_last_name], '')
OR ISNULL([ad].[AD_name], '') <> ISNULL([t1].[ad_name], '');
END; /* @mode = 2 */
DROP TABLE [#temp_address];
COMMIT TRANSACTION;
END TRY
BEGIN CATCH
PRINT ERROR_MESSAGE()
PRINT 'on line '+CAST(ERROR_LINE() AS VARCHAR(6))
ROLLBACK TRANSACTION
END CATCH