SQL Server 2008: BEGIN TRY-und der BEGIN TRANSACTION-CURSOR

Ich versuche, eine Schleife durch eine Reihe von Aufzeichnungen und verarbeiten Sie. Der cursor sollte weiterhin Durchlaufen der Datensätze, auch bei einem FEHLER in der Verarbeitung, aber am Ende der batch, die ich sehen möchte, die Fehlermeldungen, ALLE Datensätze, die das produziert Fehler.

Ich habe den folgenden code:

AUSWÄHLEN....

    OPEN cur
    FETCH next FROM cur INTO
    @some_variables
    WHILE @@fetch_status = 0
    BEGIN

    BEGIN TRY
      BEGIN TRANSACTION
        ...process the record...
      COMMIT
    END TRY

   BEGIN CATCH
   ROLLBACK

     RAISERROR ('%s',16, 1, @variable_containing_error)

    END CATCH
    END

            FETCH next FROM cur INTO
           @some_variables


    CLOSE cur
    DEALLOCATE cur

Wenn ich zwei Datensätze, die beide mit Fehler, bekomme ich nur die erste Fehlermeldung und nicht die zweite Datensätze Fehlermeldung.

Ich bin nicht sicher, ob ich den BEGIN TRY-und TRANSACTION-Befehle richtig.

Kann mir bitte jemand helfen?

Brauchen Sie wirklich einen cursor?

InformationsquelleAutor Pierre Barnard | 2014-08-04

Schreibe einen Kommentar