Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Использование exec в табличной функции  [new]
Clasteruga
Member

Откуда:
Сообщений: 60
Всем привет, столкнулся с проблемой.

Хочу создать функцию которая вернет в результате таблицу, но результат запроса всегда демонический в зависимости от параметра, можно ли как-то сформировать и вернуть результат обработки запроса с помощью exec

Сделать нечто подобное

CREATE FUNCTION kpi.GETPlanFactBrands (
@param1 int,
@sql nvarchar(max)
)
IF @param1 = 1
BEGIN
SET
@sql = 'qqq'
END
EXEC (@sql)
13 май 13, 11:28    [14286447]     Ответить | Цитировать Сообщить модератору
 Re: Использование exec в табличной функции  [new]
iap
Member

Откуда: Москва
Сообщений: 47001
Clasteruga
результат запроса всегда демонический
Точно подмечено!

Динамика же в функциях T-SQL запрещена.
13 май 13, 11:31    [14286467]     Ответить | Цитировать Сообщить модератору
 Re: Использование exec в табличной функции  [new]
Clasteruga
Member

Откуда:
Сообщений: 60
Есть варианты решения данной проблеммы?
13 май 13, 11:33    [14286488]     Ответить | Цитировать Сообщить модератору
 Re: Использование exec в табличной функции  [new]
Crimean
Member

Откуда:
Сообщений: 13148
Clasteruga,

а зачем вам тут функция, когда у вас уже запрос сформирован?
13 май 13, 11:37    [14286524]     Ответить | Цитировать Сообщить модератору
 Re: Использование exec в табличной функции  [new]
Clasteruga
Member

Откуда:
Сообщений: 60
В результате получается очень большой кусок кода, и при вставке его в SSRS? Если использовать не функции получаю такую ошибку

The size necessary to buffer the XML content exceeded the buffer quota
13 май 13, 11:42    [14286561]     Ответить | Цитировать Сообщить модератору
 Re: Использование exec в табличной функции  [new]
natya
Member [заблокирован]

Откуда: Азербайджан, Баку
Сообщений: 347
CREATE FUNCTION kpi.GETPlanFactBrands @param1 int,
@sql nvarchar(max))
RETURNS nvarchar(max)
AS
BEGIN
If IF @param1 = 1
Set @sql = 'qqq'
RETURN (@sql)

END
13 май 13, 11:54    [14286653]     Ответить | Цитировать Сообщить модератору
 Re: Использование exec в табличной функции  [new]
natya
Member [заблокирован]

Откуда: Азербайджан, Баку
Сообщений: 347
CREATE FUNCTION kpi.GETPlanFactBrands @param1 int,
@sql nvarchar(max))
RETURNS nvarchar(max)
AS
BEGIN
IF @param1 = 1
Set @sql = 'qqq'
RETURN (@sql)

END
13 май 13, 11:55    [14286659]     Ответить | Цитировать Сообщить модератору
 Re: Использование exec в табличной функции  [new]
Glory
Member

Откуда:
Сообщений: 104760
Clasteruga
В результате получается очень большой кусок кода

Несколько гигабайт что ли ?
13 май 13, 11:59    [14286688]     Ответить | Цитировать Сообщить модератору
 Re: Использование exec в табличной функции  [new]
Clasteruga
Member

Откуда:
Сообщений: 60
СПАСИБО ТО ЧТО НАДО


natya
CREATE FUNCTION kpi.GETPlanFactBrands @param1 int,
@sql nvarchar(max))
RETURNS nvarchar(max)
AS
BEGIN
IF @param1 = 1
Set @sql = 'qqq'
RETURN (@sql)

END
13 май 13, 12:31    [14286937]     Ответить | Цитировать Сообщить модератору
 Re: Использование exec в табличной функции  [new]
natya
Member [заблокирован]

Откуда: Азербайджан, Баку
Сообщений: 347
спасибо вам тоже
13 май 13, 12:41    [14287015]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить