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

Откуда:
Сообщений: 97
Здравствуйте, есть вопрос.
Существует таблица T со столбцами name_column varchar(100) и visible(bit).
Существует ф-ция, которая выдает результаты в столбцах, названия столбцов встречаются в записях вышеописанной таблицы T.
Каким образом построить запрос к ф-ции, чтобы она выдавала наборы результатов только c теми столбцами, имена которых в таблице T и их visible = true ?
Создание временной таблицы, в которой создаются в цикле столбцы(и тут же инсерт из ф-ции во вновь добавленный столбец), в соответствии с перечнем имен столбцов из таблицы T ? Как то это совсем неизящно, пока другого не придумалось
19 дек 12, 19:34    [13656317]     Ответить | Цитировать Сообщить модератору
 Re: Формирование запроса с переменным набором столбцов  [new]
UV
Member

Откуда: EU
Сообщений: 36
sp_executesql
19 дек 12, 19:43    [13656349]     Ответить | Цитировать Сообщить модератору
 Re: Формирование запроса с переменным набором столбцов  [new]
Виктор_sql
Member

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

да, я думал об этом, забыл написать в начале, что sp_executesql тут по некоторым причинам не пойдет.
20 дек 12, 04:20    [13657437]     Ответить | Цитировать Сообщить модератору
 Re: Формирование запроса с переменным набором столбцов  [new]
Виктор_sql
Member

Откуда:
Сообщений: 97
и, кстати, при накоплении во временную таблицу, увеличивается время, что уж совсем не хорошо. Ф-ция и так затратная
20 дек 12, 07:48    [13657548]     Ответить | Цитировать Сообщить модератору
 Re: Формирование запроса с переменным набором столбцов  [new]
kain111
Member

Откуда:
Сообщений: 226
а изменить функцию которая
автор
которая выдает результаты в столбцах
добавив в условие where visible = true, или добавить в нее соединение с таблицей T или сделать дополнительный необязательный входной параметр при задании которого это условие действует.
20 дек 12, 08:21    [13657595]     Ответить | Цитировать Сообщить модератору
 Re: Формирование запроса с переменным набором столбцов  [new]
Виктор_sql
Member

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

Таблица T с именами столбцов замышлялась, как хранение конфигурации вызываемых полей(по их именам, по ид полей нельзя, ибо объекты могут быть пересозданы). Могут спросить, в чем проблема, сделай селект полей, которые тебе нужны с клиента или из др.запроса. Но нужно сделать запрос, исходя из записанной конфигурации. Как сделать грамотное соединение ф-ции, имена полей которой записаны в этой таблице, в этом вопрос.
20 дек 12, 09:24    [13657771]     Ответить | Цитировать Сообщить модератору
 Re: Формирование запроса с переменным набором столбцов  [new]
invm
Member

Откуда: Москва
Сообщений: 9396
Виктор_sql,

Функция не может возвращать набор с переменным количеством столбцов.
20 дек 12, 09:43    [13657847]     Ответить | Цитировать Сообщить модератору
 Re: Формирование запроса с переменным набором столбцов  [new]
Гость333
Member

Откуда:
Сообщений: 3683
Виктор_sql,

Вариант "вернуть на клиент все поля запроса, а клиент пусть сам отфильтрует ненужное" не рассматривается?
20 дек 12, 10:13    [13657986]     Ответить | Цитировать Сообщить модератору
 Re: Формирование запроса с переменным набором столбцов  [new]
sphinx_mv
Member [заблокирован]

Откуда:
Сообщений: 1672
Виктор_sql
kain111,

Таблица T с именами столбцов замышлялась, как хранение конфигурации вызываемых полей(по их именам, по ид полей нельзя, ибо объекты могут быть пересозданы). Могут спросить, в чем проблема, сделай селект полей, которые тебе нужны с клиента или из др.запроса. Но нужно сделать запрос, исходя из записанной конфигурации. Как сделать грамотное соединение ф-ции, имена полей которой записаны в этой таблице, в этом вопрос.
Почему Вы зациклись на функциях?
Может, Вам стоит для решения Вашей задачи попробовать вместо функции использовать процедуру, имеющую такую же логику и возвращающую тот же результат?
20 дек 12, 11:55    [13658654]     Ответить | Цитировать Сообщить модератору
 Re: Формирование запроса с переменным набором столбцов  [new]
Виктор_sql
Member

Откуда:
Сообщений: 97
Гость333,
в клиенте я бы мог сделать просто SELECT a,b,c FROM F и не было бы вопроса
20 дек 12, 12:25    [13658905]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить