powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / udf с if: для 'returns table as return', для 'returns @Ret table.. Insert @Ret' ...
5 сообщений из 5, страница 1 из 1
udf с if: для 'returns table as return', для 'returns @Ret table.. Insert @Ret' ...
    #40079751
ef1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ef1
Гость
всем привет
(mssql server 2000)

подскажите пожалуйста
использую в системе свои UDF двух типов
1. возврат произвольного количества колонок из конструкции типа returns table as return Select...
(нет возможности использовать условия по if)
2. возврат фиксированного количества колонок из конструкции типа returns @Ret table(..) Insert @Ret Select...'
(есть возможность использовать условия по if)

вопрос такой мне нужна UDF которая по условию из параметра вернет разные по количеству наборы данных
(можно ли замешать эти две формы функций в одну или нельзя или есть другой подход)
например
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
function [LSDBO].[Get_Select]
 (@Sel int=0, --0_data set 1_data set 2_data set 3_data set)
 Returns table as 
  Begin
    If @Sel=0
      Insert @Ret Select например 2 столбца from из одной таблицы (или функции)
    If @Sel=2
      Insert @Ret Select например 10 столбцов from из другой таблицы (или функции)
    If @Sel=1
      Insert @Ret Select * например все столбцы from из третьей таблицы (или функции)
 Return
End


фактически мне нужно отдать несколько ключевых колонок + дополнительные колонки (в зависимости от условий), т.е. получить динамический по ширине набор данных - который дальше я разберу в другой системе и покажу юзеру
?
...
Рейтинг: 0 / 0
udf с if: для 'returns table as return', для 'returns @Ret table.. Insert @Ret' ...
    #40079759
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ef1,

Код: sql
1.
2.
3.
4.
5.
select ... where @sel=0
union all
select ... where @sel=1
union all
select ... where @sel=2



Смысл Returns table as не в том, что такая функция "возвращает разное количество колонок", как раз такое использование плохое с точки зрения архитектуры, а в том что они встраивается в запросы и не ограничивает параллелизм.
...
Рейтинг: 0 / 0
udf с if: для 'returns table as return', для 'returns @Ret table.. Insert @Ret' ...
    #40079760
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ef1
получить динамический по ширине набор данных
В udf такое нереализуемо.
...
Рейтинг: 0 / 0
udf с if: для 'returns table as return', для 'returns @Ret table.. Insert @Ret' ...
    #40079764
ef1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ef1
Гость
ок, спасибо!
тему закрываем
...
Рейтинг: 0 / 0
udf с if: для 'returns table as return', для 'returns @Ret table.. Insert @Ret' ...
    #40079844
ef1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ef1
Гость
ps
сделал inline udf (по второму варианту) с возвратом фиксированного (максимального) количества колонок типа sql_variant

(по условию использую разные запросы (или в одном как посоветовал Владислав Колосов), добивая пустыми данными до нужного количества колонок)

а на стороне потребителя (в отчете) по тем же условиям конвертируюсь в нужные типы данных! ))
pps
видимо температура на улице влияет ))
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / udf с if: для 'returns table as return', для 'returns @Ret table.. Insert @Ret' ...
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]