IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[foo_DBExportGroupHardware]') AND type in (N'FN', N'IF', N'TF', N'FS', N'FT')) DROP FUNCTION [dbo].[foo_DBExportGroupHardware] 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_DBExportGroupHardware]') AND type in (N'FN', N'IF', N'TF', N'FS', N'FT')) BEGIN execute dbo.sp_executesql @statement = N'CREATE FUNCTION [dbo].[foo_DBExportGroupHardware] ( @TestObjectId int ) RETURNS xml AS BEGIN RETURN isnull(( SELECT [HardwareId] ,[LocalOnly] ,[DASId] from (SELECT d.SerialNumber as ''HardwareId'' ,h.[LocalOnly] ,d.DASId FROM [dbo].[TestObjectHardware] h inner join [dbo].[DAS] d on d.DASId = h.DASId where h.TestObjectId = @TestObjectId) Hardware for xml auto, BINARY BASE64, root (''HardwareList'')), '''') END ' END GO