22,210
社区成员
发帖
与我相关
我的任务
分享
INSERT INTO StatusData.dbo.DataMissingReport ( InvestmentId, InvestmentType, ReportTypeId, EffectiveDate, UserId, Status, Action, ExpectedTime, LastUpdate ,FrequencyPattern, MarketHolidayId )
SELECT pfi.InvestmentId AS InvestmentId,
pfi.InvestmentType AS InvestmentType,
dm.ReportTypeId,
@l_EffectiveDate AS EffectiveDate,
-1 AS UserId,
1 AS Status,
0 AS Action,
CASE WHEN pfi.DelayInDays = 0 THEN @r_WorkingDay1
WHEN pfi.DelayInDays = 1 THEN @r_WorkingDay2
WHEN pfi.DelayInDays = 2 THEN @r_WorkingDay3
WHEN pfi.DelayInDays = 3 THEN @r_WorkingDay4
WHEN pfi.DelayInDays = 4 THEN @r_WorkingDay5
WHEN pfi.DelayInDays = 5 THEN @r_WorkingDay6
WHEN pfi.DelayInDays = 6 THEN @r_WorkingDay7
WHEN pfi.DelayInDays = 7 THEN @r_WorkingDay8
WHEN pfi.DelayInDays = 8 THEN @r_WorkingDay9
WHEN pfi.DelayInDays = 9 THEN @r_WorkingDay10
ELSE DATEADD( DAY ,pfi.DelayInDays -10 +((@l_WorkdayNoOfWorkingDay10 + pfi.DelayInDays -10)/5)*2, @r_WorkingDay10 )
END AS ExpectedTime,
@l_CurrentTime AS LastUpdate,
@l_FrequencyPattern AS FrequencyPattern,
phm.MarketHolidayId AS MarketHolidayId
FROM SupportData.dbo.PerformanceFeedInfoHistory pfi WITH (NOLOCK)
INNER JOIN BasicData.dbo.InvestmentStaticInfo idr WITH (NOLOCK) ON pfi.InvestmentId = idr.GeneralId
--AND pfi.InvestmentType = idr.PerformanceType
INNER JOIN StatusData.dbo.DataPointReportTypeIdMapping dm WITH (NOLOCK) ON dm.DataPointType = pfi.DataPointType
INNER JOIN BasicData.dbo.DataUnitUniverseSetting dus WITH (NOLOCK) ON dus.DataUnitId = dm.DataUnitId AND idr.Universe = dus.Universe
INNER JOIN BasicData.dbo.DataUnitDomicileSetting dds WITH (NOLOCK) ON dds.DataUnitId = dm.DataUnitId AND ( dds.Domicile = '*' OR dds.Domicile = idr.CountryId )
INNER JOIN BasicData.dbo.PerformanceMarketHolidayMapping phm WITH (NOLOCK) ON phm.PerformanceId = idr.PerformanceId
INNER JOIN dbo.fn_SplitStringToTable ( @l_MarketHolidayIds,',' ) a ON a.Value = phm.MarketHolidayId
WHERE pfi.FrequencyPattern = @l_FrequencyPattern
--AND idr.DataReadiness = 1
--AND pfi.DataPointType<>23
AND pfi.MarkLatest = 1
AND dm.ReportCategory = 1
AND NOT EXISTS ( SELECT 1 FROM StatusData.dbo.DataMissingReport dt WITH (NOLOCK) WHERE dt.InvestmentId = idr.PerformanceId10Char AND dt.InvestmentType = idr.PerformanceType AND dt.ReportTypeId = dm.ReportTypeId AND dt.EffectiveDate = @p_EffectiveDate)
SupportData.dbo.PerformanceFeedInfoHistory 16W
BasicData.dbo.InvestmentStaticInfo 10W
StatusData.dbo.DataPointReportTypeIdMapping <100
BasicData.dbo.DataUnitUniverseSetting <500
BasicData.dbo.DataUnitDomicileSetting <100
BasicData.dbo.PerformanceMarketHolidayMapping 100W
StatusData.dbo.DataMissingReport 2000w
CREATE PROCEDURE [dbo].[chgDMRForLatestDate]
@p_EffectiveDate SMALLDATETIME,
@p_ReportCategory TINYINT
AS
SET NOCOUNT ON
DECLARE @l_Err INT,
@l_Msg VARCHAR(500),
@l_Id NVARCHAR(15),
@l_ProcName VARCHAR(30),
@l_ProcDB VARCHAR(30),
@i TINYINT,
@r_affectedRows INT
-- Initialize error handle-related constants
SET @l_Id = ''
SET @l_ProcName = OBJECT_NAME (@@PROCID)
SET @l_ProcDB = DB_NAME()
-- Business logic
BEGIN TRY
;WITH latest AS
(
SELECT Id,ReportTypeId ,MAX(KeyDate) AS LatestDate
FROM NotificationHistoryData.dbo.PresenceMissingRecord nd WITH(NOLOCK)
GROUP BY Id, ReportTypeId
)
UPDATE dmr
SET dmr.LatestDate =latest.LatestDate
FROM DataMissingReport dmr
INNER JOIN latest
ON dmr.InvestmentId=latest.Id AND dmr.ReportTypeId=latest.ReportTypeId
WHERE EffectiveDate=@p_EffectiveDate
SET @r_affectedRows= @@ROWCOUNT
SELECT @r_affectedRows;
END TRY
-- Exception handle
BEGIN CATCH
-- Rollback transaction if needed
IF @@TRANCOUNT > 0
BEGIN
ROLLBACK TRAN
END
-- Log error message
SET @l_Msg = 'Number: ' + CONVERT(VARCHAR, ERROR_NUMBER()) + CHAR(10) +
'Line: ' + CONVERT(VARCHAR, ERROR_LINE()) + CHAR(10) +
'Severity: ' + CONVERT(VARCHAR, ERROR_SEVERITY()) + CHAR(10) +
'State: ' + CONVERT(VARCHAR, ERROR_STATE()) + CHAR(10) +
'Procedure: ' + ISNULL(ERROR_PROCEDURE(), '') + CHAR(10) +
'Message: ' + ERROR_MESSAGE()
SET @l_Err = ERROR_NUMBER()
-- Store error and raise error
EXECUTE dbo.sp_LogError @l_Err, @l_Msg, @l_Id, @l_ProcName, @l_ProcDB
RAISERROR(@l_Msg, 18, 1)
RETURN @l_Err
END CATCH
RETURN @@ERROR
GO
CREATE PROCEDURE [dbo].[delDataMissingReport]
@p_InvestmentId CHAR(10),
@p_InvestmentType TINYINT,
@p_ReportTypeId TINYINT,
@p_EffectiveDate SMALLDATETIME
AS
SET NOCOUNT ON
DECLARE @l_Err INT,
@l_Msg VARCHAR(500),
@l_Id NVARCHAR(15),
@l_ProcName VARCHAR(30),
@l_ProcDB VARCHAR(30)
-- Initialize error handle-related constants
SET @l_Id = ''
SET @l_ProcName = OBJECT_NAME (@@PROCID)
SET @l_ProcDB = DB_NAME()
-- Business logic
BEGIN TRY
DELETE
FROM dbo.DataMissingReport
WHERE InvestmentId = @p_InvestmentId
AND InvestmentType = @p_InvestmentType
AND ReportTypeId = @p_ReportTypeId
AND EffectiveDate = @p_EffectiveDate
END TRY
-- Exception handle
BEGIN CATCH
-- Rollback transaction if needed
IF @@TRANCOUNT > 0
BEGIN
ROLLBACK TRAN
END
-- Log error message
SET @l_Msg = 'Number: ' + CONVERT(VARCHAR, ERROR_NUMBER()) + CHAR(10) +
'Line: ' + CONVERT(VARCHAR, ERROR_LINE()) + CHAR(10) +
'Severity: ' + CONVERT(VARCHAR, ERROR_SEVERITY()) + CHAR(10) +
'State: ' + CONVERT(VARCHAR, ERROR_STATE()) + CHAR(10) +
'Procedure: ' + ISNULL(ERROR_PROCEDURE(), '') + CHAR(10) +
'Message: ' + ERROR_MESSAGE()
SET @l_Err = ERROR_NUMBER()
-- Store error and raise error
EXECUTE dbo.sp_LogError @l_Err, @l_Msg, @l_Id, @l_ProcName, @l_ProcDB
RAISERROR(@l_Msg, 18, 1)
RETURN @l_Err
END CATCH
RETURN @@ERROR
GO