Files
DP44/DataPRO_sql/dbo.sp_DBImportSensorsAnalog.StoredProcedure.sql

366 lines
23 KiB
MySQL
Raw Normal View History

2026-04-17 14:55:32 -04:00
<EFBFBD><EFBFBD>IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[sp_DBImportSensorsAnalog]') AND type in (N'P', N'PC'))
DROP PROCEDURE [dbo].[sp_DBImportSensorsAnalog]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[sp_DBImportSensorsAnalog]') AND type in (N'P', N'PC'))
BEGIN
EXEC dbo.sp_executesql @statement = N'CREATE PROCEDURE [dbo].[sp_DBImportSensorsAnalog] AS'
END
GO
ALTER PROCEDURE [dbo].[sp_DBImportSensorsAnalog]
@AnalogSensors xml
,@errorNumber int output
,@errorMessage nvarchar(250) output
AS
BEGIN
set @errorNumber = 0
set @errorMessage = ''
declare @tSensorsAnalog table
( [SerialNumber] [nvarchar](50) NOT NULL,
[UserSerialNumber] [nvarchar](50) NOT NULL,
[Model] [nvarchar](50) NULL,
[SensorModelId] [int] NOT NULL,
[Manufacturer] [nvarchar](50) NULL,
[Status] [nvarchar](50) NOT NULL,
[MeasurementUnit] [nvarchar](50) NOT NULL,
[OffsetToleranceLow] [float] NOT NULL,
[OffsetToleranceHigh] [float] NOT NULL,
[eId] [nvarchar](50) NOT NULL,
[Capacity] [float] NOT NULL,
[Comment] [nvarchar](50) NOT NULL,
[BridgeType] [smallint] NOT NULL,
[BridgeLegMode] [smallint] NOT NULL,
[Shunt] [smallint] NOT NULL,
[Invert] [bit] NOT NULL,
[UserValue1] [nvarchar](50) NULL,
[UserValue2] [nvarchar](50) NULL,
[UserValue3] [nvarchar](50) NULL,
[FilterClass] [nvarchar](50) NOT NULL,
[BridgeResistance] [float] NOT NULL,
[IsoCode] [nvarchar](50) NOT NULL,
[CheckOffset] [bit] NOT NULL,
[SupportedExcitation] [nvarchar](50) NOT NULL,
[InitialEU] [float] NULL,
[CalInterval] [int] NOT NULL,
[CalibrationSignal] [bit] NOT NULL,
[InternalShuntResistance] [float] NOT NULL,
[ExternalShuntResistance] [float] NOT NULL,
[UniPolar] [bit] NOT NULL,
[RangeLow] [float] NOT NULL,
[RangeAve] [float] NOT NULL,
[RangeHigh] [float] NOT NULL,
[Created] [datetime] NOT NULL,
[TimesUsed] [bigint] NOT NULL,
[SensorCategory] [int] NOT NULL,
[BypassFilter] [bit] NOT NULL,
[CouplingMode] [smallint] NOT NULL,
[Version] [int] NOT NULL,
[LastModified] [datetime] NOT NULL,
[ModifiedBy] [nvarchar](50) NOT NULL,
[LocalOnly] [bit] NULL ,
[AxisNumber] [smallint] NOT NULL,
[NumberOfAxes] [smallint] NOT NULL,
[UserTags] [varbinary](max) NULL,
[DoNotUse] [bit] NOT NULL ,
[Broken] [bit] NOT NULL,
[Processed] [bit] )
insert into @tSensorsAnalog
(SerialNumber
, UserSerialNumber
, Model
, SensorModelId
, Manufacturer
, [Status]
, MeasurementUnit
, OffsetToleranceLow
, OffsetToleranceHigh
, eId
, Capacity
, Comment
, BridgeType
, BridgeLegMode
, Shunt
, Invert
, UserValue1
, UserValue2
, UserValue3
, FilterClass
, BridgeResistance
, IsoCode
, CheckOffset
, SupportedExcitation
, InitialEU
, CalInterval
, CalibrationSignal
, InternalShuntResistance
, ExternalShuntResistance
, UniPolar
, RangeLow
, RangeAve
, RangeHigh
, Created
, TimesUsed
, SensorCategory
, BypassFilter
, CouplingMode
, [Version]
, LastModified
, ModifiedBy
, LocalOnly
, AxisNumber
, NumberOfAxes
, Broken
, DoNotUse
,Processed)
select
t.x.value('@SerialNumber', 'varchar(50)') as SerialNumber
, t.x.value('@UserSerialNumber ', 'varchar(20)') as UserSerialNumber
, t.x.value('@Model ', 'varchar(50)') as Model
,0 as SensorModelId
, t.x.value('@Manufacturer', 'varchar(50)') as Manufacturer
, t.x.value('@Status', 'varchar(50)') as [Status]
, t.x.value('@MeasurementUnit', 'varchar(50)') as MeasurementUnit
, t.x.value('@OffsetToleranceLow', 'float') as OffsetToleranceLow
, t.x.value('@OffsetToleranceHigh', 'float') as OffsetToleranceHigh
, t.x.value('@eId', 'varchar(50)') as eId
, t.x.value('@Capacity', 'float') as Capacity
, t.x.value('@Comment', 'varchar(50)') as Comment
, dbo.foo_BridgeTypeConverterToInt(t.x.value('@BridgeType', 'varchar(50)')) as BridgeType
, t.x.value('@BridgeLegMode', 'smallint') as BridgeLegMode
, t.x.value('@Shunt', 'smallint') as Shunt
, t.x.value('@Invert', 'bit') as Invert
, t.x.value('@UserValue1', 'varchar(50)') as UserValue1
, t.x.value('@UserValue2', 'varchar(50)') as UserValue2
, t.x.value('@UserValue3', 'varchar(50)') as UserValue3
, t.x.value('@FilterClass', 'varchar(50)') as FilterClass
, t.x.value('@BridgeResistance', 'float') as BridgeResistance
, t.x.value('@IsoCode', 'varchar(50)') as IsoCode
, t.x.value('@CheckOffset', 'bit') as CheckOffset
, t.x.value('@SupportedExcitation', 'varchar(max)') as SupportedExcitation
, t.x.value('@InitialEU', 'float') as InitialEU
, t.x.value('@CalInterval', 'int') as CalInterval
, t.x.value('@CalibrationSignal', 'bit') as CalibrationSignal
, t.x.value('@InternalShuntResistance', 'float') as InternalShuntResistance
, t.x.value('@ExternalShuntResistance', 'float') as ExternalShuntResistance
, t.x.value('@UniPolar', 'bit') as UniPolar
, t.x.value('@RangeLow', 'float') as RangeLow
, t.x.value('@RangeAve', 'float') as RangeAve
, t.x.value('@RangeHigh', 'float') as RangeHigh
, t.x.value('@Created', 'datetime') as Created
, t.x.value('@TimesUsed', 'bigint') as TimesUsed
, t.x.value('@SensorCategory', 'int') as SensorCategory
, t.x.value('@BypassFilter', 'bit') as BypassFilter
, t.x.value('@CouplingMode', 'smallint') as CouplingMode
, t.x.value('@Version', 'int') as [Version]
, getdate() as LastModified /* t.x.value('@LastModified', 'datetime') */
, 'DBImport' as ModifiedBy /* t.x.value('@ModifiedBy', 'varchar(50)') */
, t.x.value('@LocalOnly', 'bit') as LocalOnly
, t.x.value('@AxisNumber', 'smallint') as AxisNumber
, t.x.value('@NumberOfAxes', 'smallint') as NumberOfAxes
, t.x.value('@Broken', 'bit') as Broken
, t.x.value('@DoNotUse', 'bit') as DoNotUse
,0
from @AnalogSensors.nodes('/Sensors/SensorData') t(x) OPTION (OPTIMIZE FOR ( @AnalogSensors = NULL ))
while (Select Count(*) From @tSensorsAnalog Where Processed = 0) > 0
Begin
begin try
begin transaction tSensorsAnalog
declare
@SerialNumber nvarchar(50) ,
@UserSerialNumber nvarchar(50) ,
@Model nvarchar(50) ,
@SensorModelId int ,
@Manufacturer nvarchar(50) ,
@Status nvarchar(50) ,
@MeasurementUnit nvarchar(50) ,
@OffsetToleranceLow float ,
@OffsetToleranceHigh float ,
@eId nvarchar(50) ,
@Capacity float ,
@Comment nvarchar(50) ,
@BridgeType smallint ,
@BridgeLegMode smallint ,
@Shunt smallint ,
@Invert bit ,
@UserValue1 nvarchar(50) ,
@UserValue2 nvarchar(50) ,
@UserValue3 nvarchar(50) ,
@FilterClass nvarchar(50) ,
@BridgeResistance float ,
@IsoCode nvarchar(50) ,
@CheckOffset bit ,
@SupportedExcitation nvarchar(50) ,
@InitialEU float ,
@CalInterval int ,
@CalibrationSignal bit ,
@InternalShuntResistance float ,
@ExternalShuntResistance float ,
@UniPolar bit ,
@RangeLow float ,
@RangeAve float ,
@RangeHigh float ,
@Created datetime ,
@TimesUsed bigint ,
@SensorCategory int ,
@BypassFilter bit ,
@CouplingMode smallint ,
@Version int ,
@LastModified datetime ,
@ModifiedBy nvarchar(50) ,
@LocalOnly bit ,
@AxisNumber smallint ,
@NumberOfAxes smallint ,
@UserTags varbinary(max) ,
@DoNotUse bit ,
@Broken bit
select top 1
@SerialNumber = SerialNumber
,@UserSerialNumber = UserSerialNumber
,@Model = Model
,@SensorModelId = SensorModelId
,@Manufacturer = Manufacturer
,@Status = [Status]
,@MeasurementUnit = MeasurementUnit
,@OffsetToleranceLow = OffsetToleranceLow
,@OffsetToleranceHigh = OffsetToleranceHigh
,@eId = eId
,@Capacity = Capacity
,@Comment = Comment
,@BridgeType = BridgeType
,@BridgeLegMode = BridgeLegMode
,@Shunt = Shunt
,@Invert = Invert
,@UserValue1 = UserValue1
,@UserValue2 = UserValue2
,@UserValue3 = UserValue3
,@FilterClass = FilterClass
,@BridgeResistance = BridgeResistance
,@IsoCode = IsoCode
,@CheckOffset = CheckOffset
,@SupportedExcitation = SupportedExcitation
,@InitialEU = InitialEU
,@CalInterval = CalInterval
,@CalibrationSignal = CalibrationSignal
,@InternalShuntResistance = InternalShuntResistance
,@ExternalShuntResistance = ExternalShuntResistance
,@UniPolar = UniPolar
,@RangeLow = RangeLow
,@RangeAve = RangeAve
,@RangeHigh = RangeHigh
,@Created = Created
,@TimesUsed = TimesUsed
,@SensorCategory = SensorCategory
,@BypassFilter = BypassFilter
,@CouplingMode = CouplingMode
,@Version = [Version]
,@LastModified = LastModified
,@ModifiedBy = ModifiedBy
,@LocalOnly = LocalOnly
,@AxisNumber = AxisNumber
,@NumberOfAxes = NumberOfAxes
,@UserTags = UserTags
,@DoNotUse = DoNotUse
,@Broken = Broken
from @tSensorsAnalog where Processed = 0
declare @new_id int
exec dbo.sp_SensorsAnalogUpdateInsert
@SerialNumber
,@UserSerialNumber
,@Model
,@Manufacturer
,@Status
,@MeasurementUnit
,@OffsetToleranceLow
,@OffsetToleranceHigh
,@eId
,@Capacity
,@Comment
,@BridgeType
,@BridgeLegMode
,@Shunt
,@Invert
,@UserValue1
,@UserValue2
,@UserValue3
,@FilterClass
,@BridgeResistance
,@IsoCode
,@CheckOffset
,@SupportedExcitation
,@InitialEU
,@CalInterval
,@CalibrationSignal
,@InternalShuntResistance
,@ExternalShuntResistance
,@UniPolar
,@RangeLow
,@RangeAve
,@RangeHigh
,@Created
,@TimesUsed
,@SensorCategory
,@BypassFilter
,@CouplingMode
,@Version
,@LastModified
,@ModifiedBy
,@LocalOnly
,@AxisNumber
,@NumberOfAxes
,@UserTags
,@DoNotUse
,@Broken
,@new_id output
,@errorNumber output
,@errorMessage output
update @tSensorsAnalog set Processed = 1 where SerialNumber = @SerialNumber
commit transaction tSensorsAnalog
end try
begin catch
set @errorNumber = error_number()
set @errorMessage = error_message()
rollback transaction tSensorsAnalog
end catch;
end
END
GO