USE [EnergySuiteDB]
GO
/****** Object: StoredProcedure [dbo].[usp_ManualMeterReadings_BulkUploadMerge] Script Date: 12/29/2013 07:07:40 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[usp_ManualMeterReadings_BulkUploadMerge]
(
@MeterID INT
)
AS
BEGIN
DECLARE @retValue INT
declare @dt datetime
declare @matched INT
BEGIN TRY
IF OBJECT_ID('ManualMeterReadings') IS NOT NULL
BEGIN
BEGIN TRANSACTION MergManualMeterReadingsTable
SET NOCOUNT ON;
MERGE dbo.ManualMeterReadings AS target
USING
( SELECT PU.MeterID,
PU.MPAN ,
PU.MeterReference ,
PU.MeterReference2 ,
PU.MeterReading ,
PU.PeakDemand ,
PU.Offset ,
PU.PowerFactor ,
PU.ReactiveConsumption ,
PU.ReadingType ,
PU.Consumption ,
PU.Target ,
PU.TargetDifference ,
PU.Timestamp ,
PU.ActualkVA ,
PU.AvailablekVA ,
PU.Barcode
FROM dbo.tempManualMeterReadings PU
WHERE PU.MeterID = @MeterID
GROUP BY PU.MeterID,
PU.MPAN ,
PU.MeterReference ,
PU.MeterReference2 ,
PU.MeterReading ,
PU.PeakDemand ,
PU.Offset ,
PU.PowerFactor ,
PU.ReactiveConsumption ,
PU.ReadingType ,
PU.Consumption ,
PU.Target ,
PU.TargetDifference ,
PU.Timestamp ,
PU.ActualkVA ,
PU.AvailablekVA ,
PU.Barcode
) AS source (MeterID, MPAN ,
MeterReference ,
MeterReference2 ,
MeterReading ,
PeakDemand ,
Offset ,
PowerFactor ,
ReactiveConsumption ,
ReadingType ,
Consumption ,
Target ,
TargetDifference ,
Timestamp ,
ActualkVA ,
AvailablekVA ,
Barcode )
ON ( (target.MeterID) = (source.MeterID)
AND (target.Timestamp) = (source.Timestamp)
)
WHEN MATCHED
THEN
UPDATE SET
@dt=source.timestamp,
Consumption = source.Consumption ,
MeterReading = source.MeterReading,
ReactiveConsumption=source.ReactiveConsumption,
ActualkVA=source.ActualkVA,
AvailablekVA=source.AvailablekVA
WHEN NOT MATCHED
THEN
INSERT (
MeterID, MPAN ,
MeterReference ,
MeterReference2 ,
MeterReading ,
PeakDemand ,
Offset ,
PowerFactor ,
ReactiveConsumption ,
ReadingType ,
Consumption ,
Target ,
TargetDifference ,
Timestamp ,
ActualkVA ,
AvailablekVA ,
Barcode
) VALUES
( source.MeterID, source.MPAN ,
source.MeterReference ,
source.MeterReference2 ,
source.MeterReading ,
source.PeakDemand ,
source.Offset ,
source.PowerFactor ,
source.ReactiveConsumption ,
source.ReadingType ,
source.Consumption ,
source.Target ,
source.TargetDifference ,
source.Timestamp ,
source.ActualkVA ,
source.AvailablekVA ,
source.Barcode
);
DELETE PU
FROM dbo.tempManualMeterReadings PU
WHERE PU.MeterID = @MeterID
COMMIT TRANSACTION MergManualMeterReadingsTable
SET @retValue = 1
SELECT @retValue
END
ELSE
BEGIN
SET @retValue = -1
SELECT @retValue
END
END TRY
BEGIN CATCH
ROLLBACK TRANSACTION MergManualMeterReadingsTable
DECLARE @ErrorMsg VARCHAR(MAX);
DECLARE @ErrorSeverity INT;
DECLARE @ErrorState INT;
SET @ErrorMsg = ERROR_MESSAGE();
SET @ErrorSeverity = ERROR_SEVERITY();
SET @ErrorState = ERROR_STATE();
SET @retValue = 1000
SELECT @retValue
-- SELECT 0 AS isSuccess
END CATCH
END
Hi,ASKER
Microsoft SQL Server is a suite of relational database management system (RDBMS) products providing multi-user database access functionality.SQL Server is available in multiple versions, typically identified by release year, and versions are subdivided into editions to distinguish between product functionality. Component services include integration (SSIS), reporting (SSRS), analysis (SSAS), data quality, master data, T-SQL and performance tuning.
TRUSTED BY