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