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

Откуда:
Сообщений: 62
Уважаемые! Помогите!!!
Мне надо получить параметры к запросу из значений, хранящихся в таблице.
Я создал табличную функцию и хотел получить набор данных, но запрос возвращает только одну запись. Ломаю голову целый день, но не могу понять, в чем дело.
Код:
ALTER FUNCTION dbo.Функция27()
RETURNS
@Список TABLE
(IDКлиенты int)
AS
BEGIN
DECLARE
@idДоставка int,
@idОбласть int,
@ДатаНачала datetime,
@ДатаОкончания datetime,
@idТелеканал int,
@idТовар int,
@IDКлиенты int;
SELECT
@ДатаНачала = ДатаНачала,
@ДатаОкончания = ДатаОкончания,
@idДоставка = idДоставка,
@idОбласть = idОбласть,
@idТелеканал = idТелеканал,
@idТовар = idТовар
FROM dbo.ДляПараметровОбзвона;

SELECT @IDКлиенты = dbo.Клиенты.IDКлиенты
FROM dbo.Клиенты INNER JOIN
dbo.Заказы ON dbo.Клиенты.IDКлиенты = dbo.Заказы.ЗIDКлиенты INNER JOIN
dbo.ДеталиЗаказа ON dbo.Заказы.IDЗаказы = dbo.ДеталиЗаказа.ДзIDЗаказы
WHERE (dbo.Клиенты.Дата BETWEEN @ДатаНачала AND @ДатаОкончания) AND (dbo.Заказы.ЗIDДоставка = @idДоставка) AND (dbo.Клиенты.КIDОбласть = @idОбласть) AND (dbo.Заказы.ТВ = @idТелеканал) AND (dbo.ДеталиЗаказа.ДзIDТовар = @idТовар);
BEGIN
INSERT @Список
SELECT @IDКлиенты;
END;

RETURN
END;
25 май 09, 19:46    [7225269]     Ответить | Цитировать Сообщить модератору
 Re: табличная функция с параметрами из таблицы  [new]
Senya_L
Member

Откуда: Москва
Сообщений: 5381
DenisKlementiev
Уважаемые! Помогите!!!
Мне надо получить параметры к запросу из значений, хранящихся в таблице.
Я создал табличную функцию и хотел получить набор данных, но запрос возвращает только одну запись. Ломаю голову целый день, но не могу понять, в чем дело.
Код:
ALTER FUNCTION dbo.Функция27()
RETURNS 
@Список  TABLE 
(IDКлиенты int)
AS
BEGIN
DECLARE 
@idДоставка int,
@idОбласть int,
@ДатаНачала datetime,
@ДатаОкончания datetime,
@idТелеканал int,
@idТовар int,
@IDКлиенты int;
SELECT     
@ДатаНачала = ДатаНачала,
@ДатаОкончания = ДатаОкончания,
@idДоставка = idДоставка,
@idОбласть = idОбласть,
@idТелеканал = idТелеканал,
@idТовар = idТовар
FROM         dbo.ДляПараметровОбзвона;

SELECT @IDКлиенты = dbo.Клиенты.IDКлиенты
FROM   dbo.Клиенты INNER JOIN
       dbo.Заказы ON dbo.Клиенты.IDКлиенты = dbo.Заказы.ЗIDКлиенты INNER JOIN
       dbo.ДеталиЗаказа ON dbo.Заказы.IDЗаказы = dbo.ДеталиЗаказа.ДзIDЗаказы
WHERE (dbo.Клиенты.Дата BETWEEN @ДатаНачала AND @ДатаОкончания) AND (dbo.Заказы.ЗIDДоставка = @idДоставка) AND (dbo.Клиенты.КIDОбласть = @idОбласть) AND  (dbo.Заказы.ТВ = @idТелеканал) AND (dbo.ДеталиЗаказа.ДзIDТовар = @idТовар);
BEGIN
        INSERT @Список
        SELECT @IDКлиенты;
END;

	RETURN 
END;
Если Вы задумаетесь о том, как в скалярную переменную @IDКлиенты "запихать" множество, то ответ станет очевидным.
25 май 09, 19:53    [7225301]     Ответить | Цитировать Сообщить модератору
 Re: табличная функция с параметрами из таблицы  [new]
Fire83
Member

Откуда: Гомель-Минск
Сообщений: 474
ALTER FUNCTION dbo.Функция27()
RETURNS
@Список TABLE
(IDКлиенты int)
AS
BEGIN
DECLARE
@idДоставка int,
@idОбласть int,
@ДатаНачала datetime,
@ДатаОкончания datetime,
@idТелеканал int,
@idТовар int,
@IDКлиенты int;
SELECT
@ДатаНачала = ДатаНачала,
@ДатаОкончания = ДатаОкончания,
@idДоставка = idДоставка,
@idОбласть = idОбласть,
@idТелеканал = idТелеканал,
@idТовар = idТовар
FROM dbo.ДляПараметровОбзвона;

INSERT INTO @Список
SELECT dbo.Клиенты.IDКлиенты
FROM dbo.Клиенты INNER JOIN
dbo.Заказы ON dbo.Клиенты.IDКлиенты = dbo.Заказы.ЗIDКлиенты INNER JOIN
dbo.ДеталиЗаказа ON dbo.Заказы.IDЗаказы = dbo.ДеталиЗаказа.ДзIDЗаказы
WHERE (dbo.Клиенты.Дата BETWEEN @ДатаНачала AND @ДатаОкончания) AND (dbo.Заказы.ЗIDДоставка = @idДоставка) AND (dbo.Клиенты.КIDОбласть = @idОбласть) AND (dbo.Заказы.ТВ = @idТелеканал) AND (dbo.ДеталиЗаказа.ДзIDТовар = @idТовар);

RETURN
END;
25 май 09, 19:56    [7225319]     Ответить | Цитировать Сообщить модератору
 Re: табличная функция с параметрами из таблицы  [new]
DenisKlementiev
Member

Откуда:
Сообщений: 62
Шож мне делать то? Ума не приложу!!!
25 май 09, 20:03    [7225336]     Ответить | Цитировать Сообщить модератору
 Re: табличная функция с параметрами из таблицы  [new]
Senya_L
Member

Откуда: Москва
Сообщений: 5381
DenisKlementiev
Шож мне делать то? Ума не приложу!!!
Так Вам же "добрый" Fire83 уже вроде как готовый ответ предоставил. Вы не знаете как распорядиться свалившимся счастьем?
25 май 09, 20:06    [7225347]     Ответить | Цитировать Сообщить модератору
 Re: табличная функция с параметрами из таблицы  [new]
DenisKlementiev
Member

Откуда:
Сообщений: 62
Спасибо спасли, отцы родные!!! Земной поклон!!!
25 май 09, 20:11    [7225359]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить