Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2004.05.30;
Скачать: [xml.tar.bz2];

Вниз

Что происходит с открытым курсором, если очистить "его" таблицу?   Найти похожие ветки 

 
Курдль ©   (2004-05-04 20:21) [0]


begin
 declare CNTR_CURSOR cursor for select * from CNTR_TABLE;
 open CNTR_CURSOR;
 delete from CNTR_TABLE;
 CNTR_LOOP:
 loop
   fetch next CNTR_CURSOR into ...;
   --Если конец набора данных - покинуть петлю
   if sqlstate = "02000"
     then leave CNTR_LOOP;
     message "нет ни одной записи" to log;
   end if;
   message "обработана запись" to log;
 end loop CNTR_LOOP;
 close CNTR_CURSOR;
end;

Если выделенная строка отсутствует, лог выглядит так:
обработана запись
обработана запись
....
обработана запись


Если выделенная строка присутствует:
нет ни одной записи
Что выходит? Изменения в "управляющей таблице(-ах)" после открытия курсора ведут к необратимым изменениям набора данных, которые принял курсор?  :(


 
Andriy Tysh ©   (2004-05-05 10:10) [1]

В MS SQL есть Dynamic и Static курсоры. Первый - реагирует на какие-либо изменеия в своём наборе данных если изменение произошло в том месте, куда он ещё не дошёл, второй делает "фотку" и далее его ничего не тревожит.


 
Курдль ©   (2004-05-05 10:13) [2]

А можно навскидочку весь синтаксис (у меня Sybase, но попробую применить, или хоть доку порыть в нужном направлении). Но вообще-то это странно - нафиг он нужен такой "динамический"?..


 
Andriy Tysh ©   (2004-05-05 10:28) [3]

Нет под рукой у меня хелпа. Но парень, который раньше работал с нами, тоже писал под Sybase. В его процедурах точно был динамический курсор. Нафиг он ему был нужен в тех местах, где он его использует - мы до сих пор не понимаем. Я всегда использую статический. Но это зависит от задачи. Если я выбираю к примеру названия и коды товаров, то предполагаю, что эти два поля точно за 0.0001 секунду никто не изменит. (:-)
Поэтому и не напрягаюсь.


 
Курдль ©   (2004-05-05 10:33) [4]


> Если я выбираю к примеру названия и коды товаров, то предполагаю,
> что эти два поля точно за 0.0001 секунду никто не изменит.
> (:-)
> Поэтому и не напрягаюсь.

У меня задача, в которой без вмешательства не обойтись - курсор строится по 2-м таблицам, связанным по внешнему ключу. Причем, чтобы что-то удалить из второй - надо сначала зачистить первую.



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2004.05.30;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.037 c
3-1084370851
юрок
2004-05-12 18:07
2004.05.30
ДБ Грид


14-1084024900
Dron88
2004-05-08 18:01
2004.05.30
OpenGl


8-1079595546
Ziko
2004-03-18 10:39
2004.05.30
Рисование штриховых и пунктирных линий GDI толщиной > 1


14-1084214136
PaRL
2004-05-10 22:35
2004.05.30
Самообразование


1-1084630444
Torin
2004-05-15 18:14
2004.05.30
Регистр





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский