191 lines
11 KiB
Transact-SQL
191 lines
11 KiB
Transact-SQL
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
|