为了确保数据库中的数据完整性和一致性,我们需要对相关表进行合理的数据处理和类型创建。以下是具体的步骤说明:
第一步:检查并删除旧类型
执行以下T-SQL语句确保类型已存在且准备删除:
IF EXISTS ( SELECT 1 FROM sys.types t JOIN sys.schemas s ON t.schema_id = s.schema_id WHERE t.name = 'tp_AICMonthlyWarrantData' AND s.name = 'MIR' ) DROP TYPE MIR.tp_AICMonthlyWarrantData GO
第二步:创建新类型
使用以下T-SQL语句创建需要的表类型:
CREATE TYPE MIR.tp_AICMonthlyWarrantData AS TABLE ( SecId CHAR(10) NOT NULL, EffectiveDate DATE NOT NULL, WarrantIssued INT NULL, WarrantExercised INT NULL, WarrantsCancelled INT NULL, WarrantsExpired INT NULL, Outstanding BIGINT NULL, Note NVARCHAR(500) NULL ) GO
同时授予公众执行权限:
GRANT EXECUTE ON TYPE::MIR.tp_AICMonthlyWarrantData TO PUBLIC GO
第三步:执行数据合并操作
对数据表进行合并操作,确保数据的一致性:
MERGE INTO OperationData.MIR.AICMonthlyWarrantData a USING @p_warrantTable b ON a.SecId = b.SecId AND a.EffectiveDate = b.EffectiveDate WHEN MATCHED THEN SET a.Issued = b.WarrantIssued, a.Exercised = b.WarrantExercised, a.Repurchased = b.WarrantsCancelled, a.Expired = b.WarrantsExpired, a.Outstanding = b.Outstanding, a.Note = b.Note WHEN NOT MATCHED THEN INSERT (SecId, EffectiveDate, Issued, Exercised, Repurchased, Expired, Outstanding, Note, LastUpdate) VALUES (b.SecId, b.EffectiveDate, b.WarrantIssued, b.WarrantExercised, b.WarrantsCancelled, b.WarrantsExpired, b.Outstanding, b.Note, getdate()) GO
第四步:执行可转换数据合并操作
对可转换数据表进行合并操作:
MERGE INTO OperationData.MIR.AICMonthlyCovertibleData a USING @p_convertibleTable b ON a.SecId = b.SecId AND a.EffectiveDate = b.EffectiveDate WHEN MATCHED THEN SET a.Issued = b.ConvertibleIssued, a.Repurchased = b.ConvertibleRepurchased, a.Converted = b.ConvertibleConverted, a.Redeemed = b.ConvertibleRedeemed, a.Outstanding = b.Outstanding, a.Note = b.Note, a.ConvertibleTotalValue = b.ConvertibleConvertibleTotalValue, a.ConvertibleFairValue = b.ConvertibleConvertibleFairValue WHEN NOT MATCHED THEN INSERT (SecId, EffectiveDate, Issued, Repurchased, Converted, Redeemed, Outstanding, Note, ConvertibleTotalValue, ConvertibleFairValue, LastUpdate) VALUES (b.SecId, b.EffectiveDate, b.ConvertibleIssued, b.ConvertibleRepurchased, b.ConvertibleConverted, b.ConvertibleRedeemed, b.Outstanding, b.Note, b.ConvertibleConvertibleTotalValue, b.ConvertibleConvertibleFairValue, getdate()) GO
以上操作完成后,数据将被正确合并到目标数据表中,确保数据的完整性和一致性。
转载地址:https://www.cnblogs.com/mibing/p/8609787.html