IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[foo_IdGetSensorByType]') AND type in (N'FN', N'IF', N'TF', N'FS', N'FT')) DROP FUNCTION [dbo].[foo_IdGetSensorByType] 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].[foo_IdGetSensorByType]') AND type in (N'FN', N'IF', N'TF', N'FS', N'FT')) BEGIN execute dbo.sp_executesql @statement = N'CREATE FUNCTION [dbo].[foo_IdGetSensorByType] ( @SerialNumber varchar(50) ,@SensorType int ) RETURNS int AS BEGIN declare @SensorId int set @SensorId = 0 if @SensorType = 0 begin set @SensorId = isnull((select top 1 Id from [dbo].[SensorsAnalog] where SerialNumber = @SerialNumber), 0) end else if @SensorType = 1 begin set @SensorId = isnull((select top 1 Id from [dbo].[SensorsDigitalIn] where SerialNumber = @SerialNumber), 0) end else if @SensorType = 2 begin set @SensorId = isnull((select top 1 Id from [dbo].[SensorsDigitalOut] where SerialNumber = @SerialNumber), 0) end else if @SensorType = 3 begin set @SensorId = isnull((select top 1 Id from [dbo].[SensorsSquib] where SerialNumber = @SerialNumber), 0) end return @SensorId END ' END GO