Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Испортит ли курсор такая конструкция: / 12 сообщений из 12, страница 1 из 1
11.09.2002, 17:34:55
    #32049810
vadim_march
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Испортит ли курсор такая конструкция:
Здраствуйте! Изв за нелепый вопрос
Ест курсор:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
   ...
   declare @cursel cursor
   local forward_only
   for select *
   from #sel
   where qty >  0  and _hide =  1 
   order by olongid
   for update qty, _hide

   open @cursel
 -------
 
   ...
   ...
   if ... begin
      update #sel
      set _hide =  0 
      where qty =  10 
      where current of @cursel
   end
   ...
   fetch @cursel
   ...

Могу ли я не попасть на какую-либо строку, или попасть дважды после update
...
Рейтинг: 0 / 0
11.09.2002, 17:40:03
    #32049812
VVG_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Испортит ли курсор такая конструкция:
Если скажешь

declare @cursel cursor
local forward_only static
for select *
from #sel
where qty > 0 and _hide = 1
order by olongid
for update qty, _hide

то точно не попадешь.
...
Рейтинг: 0 / 0
11.09.2002, 17:40:04
    #32049813
SergSuper
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Испортит ли курсор такая конструкция:
А Вы осознанно хотите курсор использовать? Может без него попробывать?
...
Рейтинг: 0 / 0
11.09.2002, 17:41:16
    #32049814
vadim_march
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Испортит ли курсор такая конструкция:
Я стараюсь кнему не прибегать, но этот случай - исключение
...
Рейтинг: 0 / 0
11.09.2002, 17:44:51
    #32049816
vadim_march
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Испортит ли курсор такая конструкция:
мне прийдется двумя курсорами стоять на таблице закупок и продаж и создавать табл связей, попеременно подтягивая то один курсор, то второй в зависимости от количеств в конкретных строках исходных таблиц
...
Рейтинг: 0 / 0
11.09.2002, 17:45:26
    #32049817
VVG_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Испортит ли курсор такая конструкция:
Извиняюсь, сглупил и поспешил. Мой ответ просьба не засчитывать.
...
Рейтинг: 0 / 0
12.09.2002, 11:04:09
    #32049942
Glory
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Испортит ли курсор такая конструкция:
Могу ли я не попасть на какую-либо строку, или попасть дважды после update

BOL - Accessing and Changing Relational Data - Cursors - Cursor Types - Forward-only Cursors

"Because the cursor cannot be scrolled backward, however, changes made to rows in the database after the row was fetched are not visible through the cursor, except for the case where a value used to determine the location of the row within the result set is modified, such as updating a column covered by a clustered index."
...
Рейтинг: 0 / 0
12.09.2002, 12:42:00
    #32050008
vadim_march
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Испортит ли курсор такая конструкция:
->Glory
>>except for the case where a value ... is modified ...
и что же всетаки будет в этом кейсе? :)
...
Рейтинг: 0 / 0
12.09.2002, 12:54:34
    #32050018
Glory
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Испортит ли курсор такая конструкция:
Ну ведь ясно написано, что это может произойти если в результате изменения записи изменится значение, с помощью которого определяется положение записи в курсоре. Как явный пример, это изменение столбца, входящего в кластерный индекс.

А вот каким образом сервер выбирает "a value used to determine the location of the row" - это вопрос. При наличии первичного ключа или поля с identity IMHO все просто - они и будут этим значением. А вот при их отсутствии сервер может выбрать и совокупуность всех полей в качетве ключа, а может и что-нибудь свое "придумать".
Угадать, имея в наличии только информацию о том, что временная локальная таблица #sel содержит поля qty, _hide и olongid плюс еще что-то, я не возмусь.
Хотя я бы исходил из наихудщих предположений.
...
Рейтинг: 0 / 0
12.09.2002, 13:07:08
    #32050035
vadim_march
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Испортит ли курсор такая конструкция:
... в моем случае курсор ходит по строкам, имеющим _hide = 1. Если на очередном шаге цикла с поиощью UPDATE
Код: plaintext
1.
А- погасить часть, еще не фетченных записей (_hide =  0 ),
Б- открыть часть, еще не фетченных записей (_hide =  1 ), 
попадуться ли они при следующем fetch next
...
Рейтинг: 0 / 0
12.09.2002, 13:07:35
    #32050036
vadim_march
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Испортит ли курсор такая конструкция:
... в моем случае курсор ходит по строкам, имеющим _hide = 1. Если на очередном шаге цикла с помощью UPDATE
Код: plaintext
1.
А- погасить часть, еще не фетченных записей (_hide =  0 ),
Б- открыть часть, еще не фетченных записей (_hide =  1 ), 
попадуться ли они при следующем fetch next
...
Рейтинг: 0 / 0
12.09.2002, 22:46:52
    #32050281
Glory
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Испортит ли курсор такая конструкция:
Еще раз
Вопрос не в том, по каким полям "ходит" курсор, а в том, что он будет использовать для определения местоположения строки в наборе ("to determine the location of the row within the result set").
Если в вашей таблице только 3 поля - qty, _hide и olongid (во всяком случае в вашем примере видны только они) - причем ни одно из них не является первичным ключом, то IMHO может случится и зацикливание курсора, т.к. сервер может сам использовать поле _hide для идентификации строк курсора. А его-то вы как раз и обновляете.
Если же например поле olongid уже есть первичный ключ, то ничего подобного не произойдет.

Резюме.
Чем гадать, каким образом поступит серевер в спорной ситуации, лучше не допустить такой ситуации.
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Испортит ли курсор такая конструкция: / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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