IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[sp_SettingsUpdateInsert]') AND type in (N'P', N'PC')) DROP PROCEDURE [dbo].[sp_SettingsUpdateInsert] 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_SettingsUpdateInsert]') AND type in (N'P', N'PC')) BEGIN EXEC dbo.sp_executesql @statement = N'CREATE PROCEDURE [dbo].[sp_SettingsUpdateInsert] AS' END GO ALTER PROCEDURE [dbo].[sp_SettingsUpdateInsert] @PropertyId nvarchar(255) ,@PropertyType int ,@PropertyValue nvarchar(255) ,@UserId nvarchar(255) = null ,@new_id int output ,@errorNumber int output ,@errorMessage nvarchar(250) output AS BEGIN set @errorNumber = 0 set @errorMessage = space(0) if(@UserId is null) begin RAISERROR(15600,-1,-1, '[sp_SettingsUpdateInsert]') /* Error 1560 - An invalid parameter or option was specified for procedure*/ end else begin if(exists(select * from [dbo].[Settings] where UserId = @UserId and PropertyId = @PropertyId)) begin set @new_id = 0 exec [dbo].[sp_SettingsUpdate] @PropertyId ,@PropertyValue ,@UserId ,@errorNumber output ,@errorMessage output end else begin exec [dbo].[sp_SettingsInsert] @PropertyId ,@PropertyType ,@PropertyValue ,@UserId ,@new_id output ,@errorNumber output ,@errorMessage output end end END GO