Службы Reporting Services: создание пользовательских функций в запросе отчета.Это реально? - PullRequest
0 голосов
/ 28 января 2010

Можно ли создать и использовать пользовательскую функцию в запросе отчета?

Примерно так:

if OBJECT_ID('userFunc', 'TF') is not null drop function userFunc
go

create function userFunc(@id int)
returns @tbl table
([id] int)
begin
insert into @tbl (id) values(@id)
return
end
go

select * from userFunc(1)

if OBJECT_ID('userFunc', 'TF') is not null drop function userFunc

Когда я запускаю этот запрос в SQL Server 2008 Management Studio, он возвращает мне 'id': 1, но когда я помещаю этот запрос в конструктор запросов отчетов - я получаю следующую ошибку:

НАЗВАНИЕ: Microsoft Report Designer

Произошла ошибка во время запроса метод дизайна был сохранен. Неверный синтаксис рядом с 'go'.

«CREATE FUNCTION» должен быть первым оператор в пакете запроса.

Неверный синтаксис рядом с 'go'.

Неверный синтаксис рядом с 'userFunc'.

Есть предложения? Как создать и использовать udf в запросах служб Reporting Services?

1 Ответ

1 голос
/ 28 января 2010

«GO» будет распознаваться только инструментами SQL : не обработчик БД и не анализатор SSRS

Это может быть, если вы действительно хотите

EXEC 'if OBJECT_ID(''userFunc'') is not null drop function userFunc'
EXEC 'create function userFunc(@id int)
returns @tbl table
([id] int)
begin
insert into @tbl (id) values(@id)
return
end'
select * from userFunc(1)

Однако для его запуска вам понадобятся ddl_admin или db_owner.

Рассматривали ли вы CTE или производную таблицу? Таблица с таким значением udf может быть заменена на CTE

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...