IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[sp_DBImportTestSetupHardware]') AND type in (N'P', N'PC')) DROP PROCEDURE [dbo].[sp_DBImportTestSetupHardware] 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_DBImportTestSetupHardware]') AND type in (N'P', N'PC')) BEGIN EXEC dbo.sp_executesql @statement = N'CREATE PROCEDURE [dbo].[sp_DBImportTestSetupHardware] AS' END GO ALTER PROCEDURE [dbo].[sp_DBImportTestSetupHardware] @TestSetupId int ,@TestSetupName varchar(50) ,@Hardware xml ,@errorNumber int output ,@errorMessage nvarchar(250) output AS BEGIN set @errorNumber = 0 set @errorMessage = space(0) declare @tHardware table( recId int identity(1,1) , DASSerialNumber varchar(50) , AddOrRemove varchar(50) , Processed bit) insert into @tHardware select t.x.value('(@HID)', 'nvarchar(50)'), t.x.value('(@Action)', 'nvarchar(50)'), 0 from @Hardware.nodes('/HardwareOverrides/HardwareOverride') t(x) while (Select Count(*) From @tHardware Where Processed = 0) > 0 Begin declare @recId int declare @DASSerialNumber varchar(50) declare @AddOrRemove varchar(50) declare @new_id int select top 1 @recId = recId, @DASSerialNumber = DASSerialNumber, @AddOrRemove = AddOrRemove from @tHardware where Processed = 0 exec [dbo].[sp_TestSetupHardwareInsert] 0 ,@DASSerialNumber ,@TestSetupId ,@TestSetupName ,@AddOrRemove ,@new_id output ,@errorNumber output ,@errorMessage output update @tHardware set [Processed] = 1 where recId = @recId end END GO