Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.09.19;
Скачать: CL | DM;

Вниз

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

 
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;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.021 c
1-61150
DDDeN
2002-09-06 10:31
2002.09.19
PDF в TXT + BMP


3-60952
roadstar
2002-08-28 13:22
2002.09.19
Повторяю вопрос...


1-61149
iNew
2002-09-06 18:51
2002.09.19
Например есть папка C: MyDir нужно перехватить событие записи


1-61164
MaximatorVeter
2002-09-07 16:21
2002.09.19
Как правильно (принято) зап-ть перебор эл-ов динам-го массива?


3-60936
michael_b
2002-08-27 21:41
2002.09.19
Можно ли работать с Decision Cube через IBX?