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

Вниз

Курсоры в триггерах   Найти похожие ветки 

 
nikolo   (2002-08-28 17:59) [0]

Hi! Проблема: у меня триггер на таблицу Х1 on insert, в котором есть курсор. В теле триггера идет вставка записей в таблицу Х2. Я открываю курсор, делаю в цикле вставку, по выходу из цикла закрываю курсор. И все замечательно, если только не сваливается эта самая вставка. И тогда остается открытым курсор.
Есть ли какие-то средства в Transact-SQL, которыми можно отловить этот Exception и закрыть курсор. Короче, что-то вроде try finally в Delphi?
Или может быть можно при входе в триггер как-то проверить открыт курсор или нет и если открыт, то закрыть его?


 
Polevi   (2002-08-28 18:35) [1]

SET CURSOR_CLOSE_ON_COMMIT ON


 
Polevi   (2002-08-28 18:38) [2]

а лучше использовать локальные курсоры

DECLARE cursor_name CURSOR
[ LOCAL | GLOBAL ]
[ FORWARD_ONLY | SCROLL ]
[ STATIC | KEYSET | DYNAMIC | FAST_FORWARD ]
[ READ_ONLY | SCROLL_LOCKS | OPTIMISTIC ]
[ TYPE_WARNING ]
FOR select_statement
[ FOR UPDATE [ OF column_name [ ,...n ] ] ]

LOCAL

Specifies that the scope of the cursor is local to the batch, stored procedure, or trigger in which the cursor was created. The cursor name is only valid within this scope. The cursor can be referenced by local cursor variables in the batch, stored procedure, or trigger, or a stored procedure OUTPUT parameter. An OUTPUT parameter is used to pass the local cursor back to the calling batch, stored procedure, or trigger, which can assign the parameter to a cursor variable to reference the cursor after the stored procedure terminates. The cursor is implicitly deallocated when the batch, stored procedure, or trigger terminates, unless the cursor was passed back in an OUTPUT parameter. If it is passed back in an OUTPUT parameter, the cursor is deallocated when the last variable referencing it is deallocated or goes out of scope.



 
aleksaziat   (2002-08-29 16:25) [3]

Fetch ststus для курсора а обработать ошибку вставки можно следуюшим образом

insert X2 values(1,1,1,1,1)
if @@error <> 0
goto LB_Error_Ins


LB_Error_Ins:
ну и здесь уже обработка

чтот вот такое должно получится



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

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

Наверх





Память: 0.45 MB
Время: 0.016 c
6-61240
Leny
2002-07-15 12:37
2002.09.19
Ошибка при установке связи


1-61201
Hagis
2002-09-08 14:00
2002.09.19
Как в переменную типа String загнать 3 строку из текстового файла


1-61154
DDi
2002-09-07 05:12
2002.09.19
Работа с Датой и Временем


6-61225
HrUsT
2002-07-12 11:37
2002.09.19
отправка e-mail через приложение


8-61224
Wadim
2002-05-22 00:30
2002.09.19
Media Player - проблемы (((





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский