95 lines
3.0 KiB
Transact-SQL
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
|