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

Откуда:
Сообщений: 108
Здравствуйте,

хочу создать функцию аля

CREATE FUNCTION dbo.testf (@x int)
RETURNS TABLE
AS
RETURN
(
IF @X=1
SELECT * FROM T1
IF @X=2
SELECT * FROM T2
);


возможно ли такое? если да, то как?
7 ноя 13, 16:07    [15091994]     Ответить | Цитировать Сообщить модератору
 Re: t-SQL, создание функции возвращающей таблицу в зависимости от параметра  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
Если структура обоих резалтсетов одинакова, то можно. BOL->Multistatement Table-valued Functions
7 ноя 13, 16:09    [15092012]     Ответить | Цитировать Сообщить модератору
 Re: t-SQL, создание функции возвращающей таблицу в зависимости от параметра  [new]
Shakill
Member

Откуда: мск
Сообщений: 1887
b10s, например

CREATE FUNCTION dbo.testf (@x int)
RETURNS TABLE
AS
RETURN
(	
SELECT a FROM T1 WHERE @x = 1
UNION ALL
SELECT a FROM T2 WHERE @x = 2
);
7 ноя 13, 16:10    [15092026]     Ответить | Цитировать Сообщить модератору
 Re: t-SQL, создание функции возвращающей таблицу в зависимости от параметра  [new]
b10s
Member

Откуда:
Сообщений: 108
pkarklin
Если структура обоих резалтсетов одинакова, то можно. BOL->Multistatement Table-valued Functions


структура результата будет разной :(
7 ноя 13, 16:11    [15092033]     Ответить | Цитировать Сообщить модератору
 Re: t-SQL, создание функции возвращающей таблицу в зависимости от параметра  [new]
Гость333
Member

Откуда:
Сообщений: 3683
CREATE FUNCTION dbo.testf (@x int)
RETURNS TABLE
AS
RETURN
( 
	SELECT * FROM T1 WHERE @X = 1
    UNION ALL
	SELECT * FROM T2 WHERE @X = 2
)
7 ноя 13, 16:11    [15092041]     Ответить | Цитировать Сообщить модератору
 Re: t-SQL, создание функции возвращающей таблицу в зависимости от параметра  [new]
Гость333
Member

Откуда:
Сообщений: 3683
b10s
структура результата будет разной :(

Мда... тогда давайте с самого начала, для чего это нужно, и почему вы выбрали именно такой способ решения вашей задачи?
7 ноя 13, 16:17    [15092103]     Ответить | Цитировать Сообщить модератору
 Re: t-SQL, создание функции возвращающей таблицу в зависимости от параметра  [new]
b10s
Member

Откуда:
Сообщений: 108
Гость333
CREATE FUNCTION dbo.testf (@x int)
RETURNS TABLE
AS
RETURN
( 
	SELECT * FROM T1 WHERE @X = 1
    UNION ALL
	SELECT * FROM T2 WHERE @X = 2
)


такие варианты тоже не канают, т.к. в зависимости от условия нужно сделать абсолютно разные выборки... с разным кол-вом полей и условия как такого к выборке не постаивть...

юнион же подходит только для одинакого кол-ва полей...
7 ноя 13, 16:17    [15092104]     Ответить | Цитировать Сообщить модератору
 Re: t-SQL, создание функции возвращающей таблицу в зависимости от параметра  [new]
b10s
Member

Откуда:
Сообщений: 108
Гость333
b10s
структура результата будет разной :(

Мда... тогда давайте с самого начала, для чего это нужно, и почему вы выбрали именно такой способ решения вашей задачи?


тут нужно абстрагироваться :) причину я объяснить не могу. задача поступила как есть - в зависимости от условия будет выбираться разное кол-во полей с разных источников
7 ноя 13, 16:18    [15092117]     Ответить | Цитировать Сообщить модератору
 Re: t-SQL, создание функции возвращающей таблицу в зависимости от параметра  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
b10s
такие варианты тоже не канают, т.к. в зависимости от условия нужно сделать абсолютно разные выборки


И зачем тогда одна функция?
7 ноя 13, 16:18    [15092123]     Ответить | Цитировать Сообщить модератору
 Re: t-SQL, создание функции возвращающей таблицу в зависимости от параметра  [new]
Glory
Member

Откуда:
Сообщений: 104751
b10s
задача поступила как есть - в зависимости от условия будет выбираться разное кол-во полей с разных источников

Что ? Задача так и звучит - при выборке из _одного_ объекта должны получаться _два_ разных по структурк результата ?
7 ноя 13, 16:20    [15092144]     Ответить | Цитировать Сообщить модератору
 Re: t-SQL, создание функции возвращающей таблицу в зависимости от параметра  [new]
b10s
Member

Откуда:
Сообщений: 108
pkarklin
b10s
такие варианты тоже не канают, т.к. в зависимости от условия нужно сделать абсолютно разные выборки


И зачем тогда одна функция?


не могу дать ответ на вопрос - зачем, почему именно так и что это вообще. есть задача.
7 ноя 13, 16:20    [15092146]     Ответить | Цитировать Сообщить модератору
 Re: t-SQL, создание функции возвращающей таблицу в зависимости от параметра  [new]
b10s
Member

Откуда:
Сообщений: 108
Glory
b10s
задача поступила как есть - в зависимости от условия будет выбираться разное кол-во полей с разных источников

Что ? Задача так и звучит - при выборке из _одного_ объекта должны получаться _два_ разных по структурк результата ?


Чуть внимательнее - объекты тоже могут быть разными.
7 ноя 13, 16:21    [15092154]     Ответить | Цитировать Сообщить модератору
 Re: t-SQL, создание функции возвращающей таблицу в зависимости от параметра  [new]
Glory
Member

Откуда:
Сообщений: 104751
b10s
Чуть внимательнее - объекты тоже могут быть разными.

Почему тогда вы хотите создать _одну_ функцию ?
7 ноя 13, 16:21    [15092167]     Ответить | Цитировать Сообщить модератору
 Re: t-SQL, создание функции возвращающей таблицу в зависимости от параметра  [new]
b10s
Member

Откуда:
Сообщений: 108
Glory
b10s
Чуть внимательнее - объекты тоже могут быть разными.

Почему тогда вы хотите создать _одну_ функцию ?

извините, но я выше дважды ответил на ваш вопрос.
7 ноя 13, 16:22    [15092176]     Ответить | Цитировать Сообщить модератору
 Re: t-SQL, создание функции возвращающей таблицу в зависимости от параметра  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
b10s
есть задача.


Какая задача? Создать одну функцию, делающую произвольную выборку из произвольного объекта?
7 ноя 13, 16:22    [15092179]     Ответить | Цитировать Сообщить модератору
 Re: t-SQL, создание функции возвращающей таблицу в зависимости от параметра  [new]
Glory
Member

Откуда:
Сообщений: 104751
b10s
Glory
пропущено...

Почему тогда вы хотите создать _одну_ функцию ?

извините, но я выше дважды ответил на ваш вопрос.

Тогда вы читайте внимательно вопрос
Задача в которой запрос к _одному_ объекту должен возвращать два различных результата - это бред
Либо постановщик задачи профан, либо вы.
7 ноя 13, 16:24    [15092195]     Ответить | Цитировать Сообщить модератору
 Re: t-SQL, создание функции возвращающей таблицу в зависимости от параметра  [new]
b10s
Member

Откуда:
Сообщений: 108
pkarklin
b10s
есть задача.


Какая задача? Создать одну функцию, делающую произвольную выборку из произвольного объекта?


не кажется ли вам, что мы вернулись к топику? ;)
внимательнее, господа!

Модератор: Когда соберетесь с мыслями и будете готовы отвечать на вопросы - приходите.


Сообщение было отредактировано: 7 ноя 13, 16:26
7 ноя 13, 16:24    [15092201]     Ответить | Цитировать Сообщить модератору
 Re: t-SQL, создание функции возвращающей таблицу в зависимости от параметра  [new]
Гость333
Member

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

Задача, в сформулированном вами виде, не имеет решения. Структура столбцов, выдаваемых табличной функцией (хоть inline, хоть multi-statement), фиксирована и не может варьироваться в зависимости от каких-либо условий. Так же, как не может варьироваться в зависимости от условий состав столбцов таблицы или представления.

Выполните запрос
select * from sys.columns where object_id = object_id('ИмяТабличнойФункции')
, и это станет очевидно.
7 ноя 13, 16:25    [15092205]     Ответить | Цитировать Сообщить модератору
 Re: t-SQL, создание функции возвращающей таблицу в зависимости от параметра  [new]
Гость333
Member

Откуда:
Сообщений: 3683
b10s
Glory
Задача так и звучит - при выборке из _одного_ объекта должны получаться _два_ разных по структурк результата ?


Чуть внимательнее - объекты тоже могут быть разными.

В данном случае "один объект" — это желаемая вами функция.
7 ноя 13, 16:26    [15092216]     Ответить | Цитировать Сообщить модератору
 Re: t-SQL, создание функции возвращающей таблицу в зависимости от параметра  [new]
b10s
Member

Откуда:
Сообщений: 108
Glory
b10s
пропущено...

извините, но я выше дважды ответил на ваш вопрос.

Тогда вы читайте внимательно вопрос
Задача в которой запрос к _одному_ объекту должен возвращать два различных результата - это бред
Либо постановщик задачи профан, либо вы.


ок. выяснять уровень профессионализма, я вижу, вы любитель. тут я не буду оспаривать ваш вывод.

теперь давайте сделаем вывод по решению задачи. у меня не получается.
7 ноя 13, 16:26    [15092220]     Ответить | Цитировать Сообщить модератору
 Re: t-SQL, создание функции возвращающей таблицу в зависимости от параметра  [new]
Glory
Member

Откуда:
Сообщений: 104751
b10s
теперь давайте сделаем вывод по решению задачи. у меня не получается

Дурацкие задачи не имеют решения.
7 ноя 13, 16:27    [15092236]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить