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

Откуда: Москва
Сообщений: 158
Пример пытаюсь придумать совершенно отстраненный, но надеюсь донести суть проблемы.
declare @i int,@j int
    declare cur_value cursor FOR
      select OBJECT_ID i,[column_id] j
      from [sys].[all_columns]
      

    open cur_value  
    FETCH NEXT FROM cur_value into   @i,@j
    while @@fetch_status = 0
     begin
          
          if OBJECT_NAME(@j) =N'sysrscols'  --затратная проверка повтряющегося значения j которую надо по максимуму исключить
            BEGIN
                ---разовое событие
                ---
                WAITFOR delay '0:0:0:05'
                FETCH NEXT FROM cur_value into   @i,@j
                CONTINUE
            END
          -- тело цикла
          --
          --
          --
          ---

          FETCH NEXT FROM cur_value into   @i,@j
     end
    close cur_value
    deallocate cur_value


Так как у таблицы несколько полей то пауза возникает на каждом поле, мне же надо пропустить все ДАЛЬНЕЙШИЕ строки курсора с этим значением, сейчас я формирую стоп-лист, курсор сам по себе очень большой, стоп лист тоже пополняется прогрессирующе.
Как повести себя в такой ситуации?
19 июн 15, 13:42    [17792487]     Ответить | Цитировать Сообщить модератору
 Re: как избавиться в курсоре от повторных не нужных значений  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37069
Выкиньте свои курсоры и расскажите о задаче, которую вы ими пытаетесь решить.
19 июн 15, 13:45    [17792508]     Ответить | Цитировать Сообщить модератору
 Re: как избавиться в курсоре от повторных не нужных значений  [new]
Glory
Member

Откуда:
Сообщений: 104760
Wisky
Как повести себя в такой ситуации?

Вместо
select OBJECT_ID i,[column_id] j
from [sys].[all_columns]

написать такой запрос, который вернет только нужные данные
19 июн 15, 13:45    [17792509]     Ответить | Цитировать Сообщить модератору
 Re: как избавиться в курсоре от повторных не нужных значений  [new]
Wisky
Member

Откуда: Москва
Сообщений: 158
Пытаюсь сделать кластеризацию значений (i).
В курсоре у меня множество пар значений i1 и i2, а так же сила связи между ними (биномиальное распределение вероятностей) отсортирован от сильной связи к слабой.
Я произвожу объединение кластеров идя по курсору, если кластер достигает наполненности (ссылка на сторонние данные), то объединение кластеров не происходит и значения связанные с переполненными кластерами я хочу из курсора исключить.
19 июн 15, 15:25    [17793346]     Ответить | Цитировать Сообщить модератору
 Re: как избавиться в курсоре от повторных не нужных значений  [new]
Glory
Member

Откуда:
Сообщений: 104760
Wisky
я хочу из курсора исключить.

Ну так исключите
19 июн 15, 15:26    [17793352]     Ответить | Цитировать Сообщить модератору
 Re: как избавиться в курсоре от повторных не нужных значений  [new]
Wisky
Member

Откуда: Москва
Сообщений: 158
как отредактировать курсор?
19 июн 15, 15:35    [17793450]     Ответить | Цитировать Сообщить модератору
 Re: как избавиться в курсоре от повторных не нужных значений  [new]
Glory
Member

Откуда:
Сообщений: 104760
Wisky
как отредактировать курсор?

Курсор - это запрос, который вы написали в declare cur_value cursor
19 июн 15, 15:37    [17793469]     Ответить | Цитировать Сообщить модератору
 Re: как избавиться в курсоре от повторных не нужных значений  [new]
Wisky
Member

Откуда: Москва
Сообщений: 158
при переполнении кластера не надо рассматривать записи курсора имеющие с ним связь,
переполнение кластера происходит при движении по курсору,
сейчас я каждый раз проверяю имеется ли связь с закрытым кластером, а я хочу исключить эти записи или ускорить эту проверку.
19 июн 15, 16:30    [17793893]     Ответить | Цитировать Сообщить модератору
 Re: как избавиться в курсоре от повторных не нужных значений  [new]
Glory
Member

Откуда:
Сообщений: 104760
Wisky
при переполнении кластера не надо рассматривать записи курсора имеющие с ним связь,
переполнение кластера происходит при движении по курсору,
сейчас я каждый раз проверяю имеется ли связь с закрытым кластером, а я хочу исключить эти записи или ускорить эту проверку.

Для чего вы все это сообщили ?
19 июн 15, 16:31    [17793899]     Ответить | Цитировать Сообщить модератору
 Re: как избавиться в курсоре от повторных не нужных значений  [new]
Wisky
Member

Откуда: Москва
Сообщений: 158
Glory
Wisky
как отредактировать курсор?

Курсор - это запрос, который вы написали в declare cur_value cursor


Я не могу первоначально убрать эти значения при создании курсора и спрашиваю как это сделать уже в цикле
19 июн 15, 16:36    [17793954]     Ответить | Цитировать Сообщить модератору
 Re: как избавиться в курсоре от повторных не нужных значений  [new]
Glory
Member

Откуда:
Сообщений: 104760
Wisky
Я не могу первоначально убрать эти значения при создании курсора и спрашиваю как это сделать уже в цикле

Вы с своем уме ?
19 июн 15, 16:38    [17793960]     Ответить | Цитировать Сообщить модератору
 Re: как избавиться в курсоре от повторных не нужных значений  [new]
WarAnt
Member

Откуда: Питер
Сообщений: 2421
Wisky
при переполнении кластера не надо рассматривать записи курсора имеющие с ним связь,
переполнение кластера происходит при движении по курсору,
сейчас я каждый раз проверяю имеется ли связь с закрытым кластером, а я хочу исключить эти записи или ускорить эту проверку.


да уж поток сознания силен, но начните вот с этого если реально нужна помощь, а не просто так тут разбрасываетесь вумными словами.
19 июн 15, 16:52    [17794040]     Ответить | Цитировать Сообщить модератору
 Re: как избавиться в курсоре от повторных не нужных значений  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2322
Wisky
Так как у таблицы несколько полей то пауза возникает на каждом поле, мне же надо пропустить все ДАЛЬНЕЙШИЕ строки курсора с этим значением
Ну так пропустите.
19 июн 15, 20:38    [17795007]     Ответить | Цитировать Сообщить модератору
 Re: как избавиться в курсоре от повторных не нужных значений  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37069
Wisky
Я не могу первоначально убрать эти значения при создании курсора и спрашиваю как это сделать уже в цикле
"Не могу" или "не умею"?
20 июн 15, 00:10    [17795722]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить