CREATE PROCEDURE [dbo].[sp_SensorsUARTUpdateInsert] @Id INT=NULL, @SerialNumber NVARCHAR (255), @BaudRate INT, @DataBits INT, @StopBits NVARCHAR (50), @Parity NVARCHAR (50), @FlowControl NVARCHAR (50), @DataFormat NVARCHAR (50), @LastModified DATETIME, @LastModifiedBy NVARCHAR (50), @UserTags VARBINARY (MAX), @Broken BIT, @DoNotUse BIT, @new_id INT OUTPUT, @errorNumber INT OUTPUT, @errorMessage NVARCHAR (255) OUTPUT AS BEGIN SET NOCOUNT ON SET @errorNumber = 0 SET @errorMessage = '' DECLARE @SensorType AS TINYINT DECLARE @SensorId AS INT SELECT @SensorType = [TypeId] FROM [dbo].[SensorsType] WHERE [SensorType]='UART' SELECT @SensorId = A.[Id] from [dbo].[Sensors] AS A INNER JOIN [dbo].SensorsType AS B ON A.SensorType=B.TypeId WHERE B.TypeId=@SensorType AND A.SerialNumber=@SerialNumber IF( @SensorId IS NULL) BEGIN INSERT INTO [dbo].[Sensors] ([SensorType], [SerialNumber]) VALUES (@SensorType, @SerialNumber) SELECT @SensorId = SCOPE_IDENTITY() SET @new_id = @SensorId INSERT INTO [dbo].[SensorsUART] ([SensorId], [BaudRate], [DataBits], [StopBits], [Parity], [FlowControl], [DataFormat], [LastModified], [LastModifiedBy], [UserTags], [Broken], [DoNotUse]) VALUES (@SensorId, @BaudRate, @DataBits, @StopBits, @Parity, @FlowControl, @DataFormat, @LastModified, @LastModifiedBy, @UserTags, @Broken, @DoNotUse) END ELSE BEGIN SET @new_id = @SensorId UPDATE [dbo].SensorsUART SET [BaudRate]=@BaudRate, [DataBits]=@DataBits, [StopBits]=@StopBits, [Parity]=@Parity, [FlowControl]=@FlowControl, [DataFormat]=@DataFormat, [LastModified]=@LastModified, [LastModifiedBy]=@LastModifiedBy, [UserTags]=@UserTags, [Broken]=@Broken, [DoNotUse]=@DoNotUse WHERE [SensorId] = @SensorId END END IF(@@error != 0) BEGIN SET @errorNumber = error_number() SET @errorMessage = error_message() END