2010-10-10 13 views
5

Co się stanie, jeśli wystąpi błąd podczas:T-sql Cursor, co stanie się w przypadku błędu?

  1. Deklarowanie kursora
  2. dane pobierania

Co się stanie, jeśli błąd występuje przed kursor jest zamknięta? Czy zamyka się automatycznie?

Kiedy używam kursora, jaki jest najlepszy sposób obsługi błędów?

Odpowiedz

1

Po wystąpieniu błędu po zadeklarowaniu kursora i zakończeniu partii kursor pozostanie otwarty. Kursor zostanie zamknięty po zamknięciu połączenia.

Jeśli można uchwycić błąd, dobrze jest zamknąć kursor w ramach obsługi błędów.

2

Aktualizacja z lepszego rozwiązania

Funkcja [CURSOR_STATUS][1] mogą być wykorzystywane do sprawdzenia stanu kursora.

W SQL 2005 i późniejszych, może on być zawijany w bloku TRY...CATCH.
Coś

BEGIN TRY 

    DECLARE <cursorName>... CURSOR FOR 
    ...cursor statement, fetch block, close & deallocate 

END TRY 
BEGIN CATCH 

    IF (CURSOR_STATUS('global', '<cursorName>') > -2) 
    DEALLOCATE dbCursor 

    ...other error handling 

END CATCH 
+1

Kiedy kursor się zamknięty, gdy nie ma błędu? –

+0

Zaktualizowano lepszym rozwiązaniem; również spróbowaliśmy uczynić przykład jaśniejszym –

+0

Dlaczego> -2? Myślę, że chcesz go zamknąć, jeśli status> = 0. – Trevor

Powiązane problemy