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