IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[sp_TestEngineerDetailsUpdateInsert]') AND type in (N'P', N'PC')) DROP PROCEDURE [dbo].[sp_TestEngineerDetailsUpdateInsert] 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_TestEngineerDetailsUpdateInsert]') AND type in (N'P', N'PC')) BEGIN EXEC dbo.sp_executesql @statement = N'CREATE PROCEDURE [dbo].[sp_TestEngineerDetailsUpdateInsert] AS' END GO ALTER PROCEDURE [dbo].[sp_TestEngineerDetailsUpdateInsert] @Name nvarchar(255) ,@TestEngineerName nvarchar(255) ,@TestEngineerPhone nvarchar(255) ,@TestEngineerFax nvarchar(255) ,@TestEngineerEmail nvarchar(255) ,@LocalOnly bit ,@LastModified datetime ,@LastModifiedBy nvarchar(50) ,@Version int ,@new_id int output ,@errorNumber int output ,@errorMessage nvarchar(250) output AS BEGIN set @errorNumber = 0; set @errorMessage = space(0); begin try declare @EngineerId int set @EngineerId = dbo.foo_IdGetEngineer(@Name) if(exists(select TestEngineerId from [dbo].[TestEngineerDetails] where TestEngineerId = @EngineerId)) begin set @new_id = @EngineerId exec [dbo].[sp_TestEngineerDetailsUpdate] @Name ,@TestEngineerName ,@TestEngineerPhone ,@TestEngineerFax ,@TestEngineerEmail ,@LastModified ,@LastModifiedBy ,@Version ,@errorNumber output ,@errorMessage output end else begin exec [dbo].[sp_TestEngineerDetailsInsert] @Name ,@TestEngineerName ,@TestEngineerPhone ,@TestEngineerFax ,@TestEngineerEmail ,@LocalOnly ,@LastModified ,@LastModifiedBy ,@Version ,@new_id output ,@errorNumber output ,@errorMessage output end end try begin catch set @errorMessage = error_message() set @errorNumber = error_number() end catch; END GO