Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Организация цикла по полям таблицы в функции  [new]
сфьщ
Guest
Здравствуйте.
Подскажите, как в цикле проапдейтить поля таблицы table-valued функции.
В таблице 21 поле. Конкретно интересует - как в цикле указать поле(pid) в инструкции UPDATE?

CREATE FUNCTION [dbo].[ELEMENT_DISCOVERY_STAT2](@element_name varchar(4)='%')
RETURNS @elemstat TABLE (element_name varchar(4),
	 pid1 smallint,
         ...
         pid20 smallint)
AS BEGIN

      INSERT @elemstat(element_name) VALUES (@element_name)

      -- Как вместо этого сделать цикл WHILE по pid1-20?
      /*UPDATE @elemstat SET
		pid1=dbo.COUNT_ELEMENTS_BY_DISCOVERY_PERIOD(@element_name,@period),
                ...
		pid20=dbo.COUNT_ELEMENTS_BY_DISCOVERY_PERIOD(@element_name,@period)
      WHERE element_name = @element_name*/

RETURN
END
29 фев 12, 18:58    [12172891]     Ответить | Цитировать Сообщить модератору
 Re: Организация цикла по полям таблицы в функции  [new]
Shakill
Member

Откуда: мск
Сообщений: 1887
сфьщ,

динамику в функции не получится использовать. лучше возвращать таблицу вида (elementname, pidnumber, pid) и без всяких циклов
29 фев 12, 19:02    [12172911]     Ответить | Цитировать Сообщить модератору
 Re: Организация цикла по полям таблицы в функции  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
Shakill, какая нафиг динамика, посмотрите на параметры функции.

Цикл тут нафиг не нужен. Это уже воображения больного ума. Нет такой постановки задачи.
29 фев 12, 23:52    [12173809]     Ответить | Цитировать Сообщить модератору
 Re: Организация цикла по полям таблицы в функции  [new]
сфьщ
Guest
Mnior
Shakill, какая нафиг динамика, посмотрите на параметры функции.

Цикл тут нафиг не нужен. Это уже воображения больного ума. Нет такой постановки задачи.


Не понял ваш коммент. Какая еще постановка задачи? И мне нужно организовать цикл, чтоб вручную не делать 20 идентичных инструкций. Не может быть, чтоб не было возможности его организовать. Жаль нельзя в функциях EXEC использовать, чтоб в цикле UPDATE в строковую переменную заганять и екзекутить...

Ну же, SQL гуру, отзовитесь!

Сообщение было отредактировано: 1 мар 12, 14:06
1 мар 12, 13:44    [12176615]     Ответить | Цитировать Сообщить модератору
 Re: Организация цикла по полям таблицы в функции  [new]
iljy
Member

Откуда:
Сообщений: 8711
сфьщ,

SELECT + CROSS APPLY + PIVOT
1 мар 12, 14:07    [12176882]     Ответить | Цитировать Сообщить модератору
 Re: Организация цикла по полям таблицы в функции  [new]
сфьщ
Guest
Shakill
сфьщ,

лучше возвращать таблицу вида (elementname, pidnumber, pid)

Сидел, думал - таки да. Согласен.

iljy
сфьщ,

SELECT + CROSS APPLY + PIVOT


Много неведомых мне слов :). За PIVOT спасибо - разобрался, UNPIVOT решает проблему о которой писал Shakill в каком виде лучше возвращать таблицу. Ибо так как он советовал - правильно, а так, как я изначально хотел - необходимо.
С остальным пока разбираюсь... Но еще не понял общую концепцию. Может примерчик маленький какой, а?
1 мар 12, 15:44    [12177681]     Ответить | Цитировать Сообщить модератору
 Re: Организация цикла по полям таблицы в функции  [new]
сфьщ
Guest
Все. Разобрался. :) Shakill, iljy - спасибо.
1 мар 12, 16:09    [12177969]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить