Stored Procedures Problembehandlung

Um Probleme innerhalb einer Stored Procedure abzufangen, gibt es mit MS SQL-Server verschiedene Möglichkeiten:

Variable mit Fehlercode

Die Variable @@ERROR ist nur dann 0, wenn bei der letzten Transaktion kein Fehler passiert ist.
Allerdings hat diese Fehlervariable einen großen Nachteil: Wenn mehrere Transaktionen in einer Prozedur durchgeführt werden, müsste man diese Variable nach jeder Transaktion abfragen.

Zurückgeben kann man die Variable mit

RETURN @@error

am Ende der Prozedur.

Oder man übrigt den Fehlercode an eine selbst definierte Variable:

SELECT @myERROR = @@ERROR

Fehlerbehandlung mit TRY…CATCH (ungetestet)

Eine fortschrittlichere Möglichkeit bieten die Blöcke TRY…CATCH. Dies würde so aussehen:

CREATE PROCEDURE DeleteEmployee ( @EmployeeID INT )
AS
 
BEGIN TRANSACTION    -- Start the transaction
 
-- Delete the Employee's phone numbers
DELETE FROM EmployeePhoneNumbers
WHERE EmployeeID = @EmployeeID
 
-- Delete the Employee record
DELETE FROM Employees
WHERE EmployeeID = @EmployeeID
 
 
-- See if there is an error
IF @@ERROR <> 0
  -- There's an error b/c @ERROR is not 0, rollback
  ROLLBACK
ELSE
  COMMIT   -- Success!  Commit the transaction

Quellen

1 Stern2 Sterne3 Sterne4 Sterne5 Sterne

Loading…
Avatar von manuel

AUTOR

manuel