![]() |
Модераторы: Akina |
![]() ![]() ![]() |
|
sergey_85 |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 445 Регистрация: 17.4.2007 Где: Россия, Челябинск Репутация: нет Всего: 1 |
Привет!
Нужно реализовать такой запрос:
Дело в том, что dbo.fn_GetList(@param1) должна возвращать в in разные select'ы, в зависимости от параметра ф-ции. Реализовать такое через процедуру не получиться, остаётся вариант с Inline table-valued function. Но здесь непонятки, можно ли в теле Inline table-valued function ф-ции использовать конструкции IF ... ELSE, чтобы возвращать разный select, если нет, то как "выйти из ситуации", чтобы вызов работал в запросе с in? Спасибо! Это сообщение отредактировал(а) sergey_85 - 15.5.2011, 22:50 -------------------- A good design always pays off. |
|||
|
||||
pengrad |
|
||||
pengrad Профиль Группа: Участник Сообщений: 23 Регистрация: 23.2.2009 Где: Москва Репутация: нет Всего: нет |
Привет, даже не надо исхитряться. Твой select всегда должен возвращать одну колонку, именно так работает in(). Поэтому смело можно использовать обычную табличную функцию:
Ну, и соответственно подправить немного вызов:
|
||||
|
|||||
Любитель |
|
|||
Программист-романтик ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3645 Регистрация: 21.5.2005 Где: Воронеж Репутация: нет Всего: 92 |
Зачем дополнительная функция в данном случае? |
|||
|
||||
pengrad |
|
|||
pengrad Профиль Группа: Участник Сообщений: 23 Регистрация: 23.2.2009 Где: Москва Репутация: нет Всего: нет |
Так красивей с функцией, нет?)
|
|||
|
||||
Любитель |
|
|||
Программист-романтик ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3645 Регистрация: 21.5.2005 Где: Воронеж Репутация: нет Всего: 92 |
Нет. А с мультилайновой функцией - ещё и гарантировано медленнее.
Добавлено через 2 минуты и 26 секунд По вопросу сабжа: Именно if/else (императивные конструкции) - нельзя. Смысл инлайновой функции именно в том, что её можно заинлайнить, подставить в запрос (т. е. всегда можно обойтись без неё - тут просто вопрос, что быть может хочется дублирования избежать). |
|||
|
||||
![]() ![]() ![]() |
Правила форума "MS SQL" | |
|
Запрещается! Публиковать ссылки и обсуждать взлом чего бы то ни было.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Zloxa, Akina. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | MS SQL Server | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |