IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[sp_DBImportSensors]') AND type in (N'P', N'PC')) DROP PROCEDURE [dbo].[sp_DBImportSensors] 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_DBImportSensors]') AND type in (N'P', N'PC')) BEGIN EXEC dbo.sp_executesql @statement = N'CREATE PROCEDURE [dbo].[sp_DBImportSensors] AS' END GO ALTER PROCEDURE [dbo].[sp_DBImportSensors] @Sensors xml ,@errorNumber int output ,@errorMessage nvarchar(250) output AS BEGIN set @errorNumber = 0 set @errorMessage = space(0) declare @param varchar(10) /*** Analog Sensors *********/ declare @AnalogSensors xml set @param = '0' select @AnalogSensors = case when convert(varchar(max), t.x.query('/Sensors/SensorData[contains(@SensorType, sql:variable("@param"))]')) = space(0) then null else convert(xml,'' + convert(varchar(max), t.x.query('/Sensors/SensorData[contains(@SensorType, sql:variable("@param"))]')) + '') end from @Sensors.nodes('.') t(x) if(@AnalogSensors is not null) begin exec dbo.sp_DBImportSensorsAnalog @AnalogSensors, @errorNumber output, @errorMessage output end /*** Digital Input Sensors *********/ declare @DigitalInputSensors xml set @param = '1' select @DigitalInputSensors = case when convert(varchar(max), t.x.query('/Sensors/SensorData[contains(@SensorType, sql:variable("@param"))]')) = space(0) then null else convert(xml,'' + convert(varchar(max), t.x.query('/Sensors/SensorData[contains(@SensorType, sql:variable("@param"))]')) + '') end from @Sensors.nodes('.') t(x) if(@DigitalInputSensors is not null) begin exec [dbo].[sp_DBImportSensorsDigitalInput] @DigitalInputSensors, @errorNumber output, @errorMessage output end /*** Digital Output Sensors *********/ declare @DigitalOutputSensors xml set @param = '2' select @DigitalOutputSensors = case when convert(varchar(max), t.x.query('/Sensors/SensorData[contains(@SensorType, sql:variable("@param"))]')) = space(0) then null else convert(xml,'' + convert(varchar(max), t.x.query('/Sensors/SensorData[contains(@SensorType, sql:variable("@param"))]')) + '') end from @Sensors.nodes('.') t(x) if(@DigitalOutputSensors is not null) begin exec [dbo].[sp_DBImportSensorsDigitalOut] @DigitalOutputSensors, @errorNumber output, @errorMessage output end /*** Squib Sensors *********/ declare @SquibSensors xml set @param = '3' select @SquibSensors = case when convert(varchar(max), t.x.query('/Sensors/SensorData[contains(@SensorType, sql:variable("@param"))]')) = space(0) then null else convert(xml,'' + convert(varchar(max), t.x.query('/Sensors/SensorData[contains(@SensorType, sql:variable("@param"))]')) + '') end from @Sensors.nodes('.') t(x) if(@SquibSensors is not null) begin exec [dbo].[sp_DBImportSensorsSquib] @SquibSensors, @errorNumber output, @errorMessage output end END GO