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

191 lines
11 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_SensorsSquibUpdateAll]') AND type in (N'P', N'PC'))
DROP PROCEDURE [dbo].[sp_SensorsSquibUpdateAll]
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_SensorsSquibUpdateAll]') AND type in (N'P', N'PC'))
BEGIN
EXEC dbo.sp_executesql @statement = N'CREATE PROCEDURE [dbo].[sp_SensorsSquibUpdateAll] AS'
END
GO
ALTER PROCEDURE [dbo].[sp_SensorsSquibUpdateAll]
@sensors xml = null
,@errorNumber int output
,@errorMessage nvarchar(250) output
AS
BEGIN
set @errorNumber = 0
set @errorMessage = space(0)
if(@sensors is null)
begin
RAISERROR(15600,-1,-1, '[sp_SensorsSquibUpdateAll]') /* Error 1560 - An invalid parameter or option was specified for procedure*/
end
else
begin
SET NOCOUNT ON;
declare @SensorsSquib table (
[Id] [int] IDENTITY(1,1) NOT NULL,
[SerialNumber] [nvarchar](50) NOT NULL,
[BypassCurrentFilter] [bit] NOT NULL,
[BypassVoltageFilter] [bit] NOT NULL,
[DelayMS] [float] NOT NULL,
[DurationMS] [float] NOT NULL,
[FireMode] [smallint] NOT NULL,
[ISOCode] [nvarchar](50) NOT NULL,
[MeasurementType] [smallint] NOT NULL,
[SquibOutputCurrent] [float] NOT NULL,
[SquibToleranceLow] [float] NOT NULL,
[SquibToleranceHigh] [float] NOT NULL,
[LimitDuration] [bit] NOT NULL,
[ArticleId] [nvarchar](50) NOT NULL,
[LocalOnly] [bit] NOT NULL,
[Version] [int] NOT NULL,
[LastModified] [datetime] NOT NULL,
[LastModifiedBy] [nvarchar](50) NOT NULL,
[UserValue1] [nvarchar](255) NULL,
[UserValue2] [nvarchar](255) NULL,
[UserValue3] [nvarchar](255) NULL,
[UserTags] [varbinary](max) NULL,
[Exist] [bit] NOT NULL DEFAULT ((0)))
declare @exist bit
set @exist =(select @sensors.exist('/DigitalIn/Sensor'))
if(@exist = 1)
begin
insert into @SensorsSquib select
t.x.value('@SerialNumber','nvarchar(50)')
,t.x.value('@BypassCurrentFilter','bit')
,t.x.value('@BypassVoltageFilter','bit')
,t.x.value('@DelayMS','float')
,t.x.value('@DurationMS','float')
,t.x.value('@FireMode','smallint')
,t.x.value('@ISOCode','nvarchar(50)')
,t.x.value('@MeasurementType','smallint')
,t.x.value('@SquibOutputCurrent','float')
,t.x.value('@SquibToleranceLow','float')
,t.x.value('@SquibToleranceHigh','float')
,t.x.value('@LimitDuration','bit')
,t.x.value('@ArticleId','nvarchar(50)')
,t.x.value('@LocalOnly','bit')
,t.x.value('@Version','int')
,t.x.value('@LastModified','datetime')
,t.x.value('@LastModifiedBy','nvarchar(50)')
,t.x.value('@UserValue1','nvarchar(255)')
,t.x.value('@UserValue2','nvarchar(255)')
,t.x.value('@UserValue3','nvarchar(255)')
,t.x.value('@UserTags','varbinary(max)')
,0
from @sensors.nodes('/Squib/Sensor') t(x)
OPTION (OPTIMIZE FOR ( @sensors = NULL ))
declare @count int
set @count = (select count(*) from @SensorsSquib)
if(@count > 0)
begin
update @SensorsSquib set Exist = case when EXISTS(select SerialNumber from v_SensorSerialNumber where SensorType = 3) then 1 else 0 end
update [dbo].[SensorsSquib] SET
[BypassCurrentFilter] = s.BypassCurrentFilter
,[BypassVoltageFilter] = s.BypassVoltageFilter
,[DelayMS] = s.DelayMS
,[DurationMS] = s.DurationMS
,[FireMode] = s.FireMode
,[ISOCode] = s.ISOCode
,[MeasurementType] = s.MeasurementType
,[SquibOutputCurrent] = s.SquibOutputCurrent
,[SquibToleranceLow] = s.SquibToleranceLow
,[SquibToleranceHigh] = s.SquibToleranceHigh
,[LimitDuration] = s.LimitDuration
,[ArticleId] = s.ArticleId
,[LocalOnly] = s.LocalOnly
,[Version] = s.[Version]
,[LastModified] = s.LastModified
,[LastModifiedBy] = s.LastModifiedBy
,[UserValue1] = s.UserValue1
,[UserValue2] = s.UserValue2
,[UserValue3] = s.UserValue3
,[UserTags] = s.UserTags
from @SensorsSquib s
where [dbo].[SensorsSquib].[SerialNumber] = s.SerialNumber
insert into [dbo].[SensorsSquib]
([SerialNumber]
,[BypassCurrentFilter]
,[BypassVoltageFilter]
,[DelayMS]
,[DurationMS]
,[FireMode]
,[ISOCode]
,[MeasurementType]
,[SquibOutputCurrent]
,[SquibToleranceLow]
,[SquibToleranceHigh]
,[LimitDuration]
,[ArticleId]
,[LocalOnly]
,[Version]
,[LastModified]
,[LastModifiedBy]
,[UserValue1]
,[UserValue2]
,[UserValue3]
,[UserTags])
select
s.SerialNumber
,s.BypassCurrentFilter
,s.BypassVoltageFilter
,s.DelayMS
,s.DurationMS
,s.FireMode
,s.ISOCode
,s.MeasurementType
,s.SquibOutputCurrent
,s.SquibToleranceLow
,s.SquibToleranceHigh
,s.LimitDuration
,s.ArticleId
,s.LocalOnly
,s.[Version]
,s.LastModified
,s.LastModifiedBy
,s.UserValue1
,s.UserValue2
,s.UserValue3
,s.UserTags
from @SensorsSquib s where Exist = 0
end
end
end
END
GO