SQL Server видит это как один блок кода, поэтому «создать функцию» не удастся.Отсюда и ошибка, которую вы получаете после выполнения того, что предложил Джастин.
Чтобы сделать это таким образом (печать сообщений и т. Д.), Вы должны выполнить инструкцию так, как она была у вас изначально.За исключением того, что вы должны сначала установить текст:
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[ConcatAttributeNames]') AND
type in (N'FN', N'IF', N'TF', N'FS', N'FT'))
BEGIN
declare @statement nvarchar(4000)
set @statement = N'
create function [dbo].[ConcatAttributeNames] (@prodId int) returns varchar(8000)
as
begin
declare @output varchar(8000)
select @output = coalesce(@output + '', '', '''') + AttributeName
from Report_Attribute
where ProdID = @ProdId and AttributeName > ''''
return @output
end '
exec sp_executesql @statement
PRINT N'Created function ConcatAttributeNames'
END
ELSE
BEGIN
PRINT N'function ConcatAttributeNames Already Exists'
END
Кроме того, поскольку вы передаете этот оператор, одинарные кавычки должны быть экранированы, чтобы избежать ошибок.