IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[foo_DBExportTestSetupGroupsAdded]') AND type in (N'FN', N'IF', N'TF', N'FS', N'FT')) DROP FUNCTION [dbo].[foo_DBExportTestSetupGroupsAdded] 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_DBExportTestSetupGroupsAdded]') AND type in (N'FN', N'IF', N'TF', N'FS', N'FT')) BEGIN execute dbo.sp_executesql @statement = N'CREATE FUNCTION [dbo].[foo_DBExportTestSetupGroupsAdded] ( @TestSetupId int ) RETURNS xml AS BEGIN RETURN isnull((SELECT [TestObjectSerialNumber] ,[TestObjectId] ,[TestSetupName] ,[TestSetupId] ,[TargetSampleRate] ,[ExcitationWarmupTimeMS] ,[LocalOnly] ,[TestObjectType] ,[TestObjectPosition] ,[dbo].[foo_DBExportGroupChannels]([TestObjectId]) from (SELECT tobj.TestObjectName as [TestObjectSerialNumber] , tobj.TestObjectId , ts.[TestSetupName] , tso.TestSetupId , tso.[TargetSampleRate] , tso.[ExcitationWarmupTimeMS] , tso.[LocalOnly] , tso.[TestObjectType] , tso.[TestObjectPosition] FROM [dbo].[TestSetupObjects] tso inner join [dbo].[TestSetups] ts on ts.TestSetupId = tso.TestSetupId inner join [dbo].[TestObjects] tobj on tobj.TestObjectId = tobj.TestObjectId and tobj.Embedded = 1 where ts.TestSetupId = @TestSetupId) TestObject for xml auto, elements, BINARY BASE64, root (''AddedGroups'')), '''') END ' END GO