ich Transaktion mit dieser Struktur haben:korrekte Art und Weise ERROR in TSQL Transaktion zu behandeln
CREATE PROCEDURE XXX @param bit
AS
BEGIN TRAN
IF (@param = 1) BEGIN
-- DO SOME STUFF LIKE INSERT, UPDATE AND SO ON...
RETURN 1 -- RETURN 1 FOR SUCCESS
END
ELSE BEGIN
-- CONDITION IS NOT SUCCESSFUL SO NOTHING HAPPENED AND I NEED HANDLE
-- IN C#
RETURN -1
END
BEGIN TRY
COMMIT TRAN
END TRY
BEGIN CATCH
ROLLBACK TRAN
RETURN -1
END CATCH
ich eine Rückkehr clausule hinzugefügt haben, aber ich weiß nicht, ob es eine gute Lösung ist, und behandeln es in C# Code? In C# ich brauche nur zwei Zustände behandeln:
- Wenn Bedingung passt, und ohne Fehler gemacht Code zurück 1 oder wahr
- Andere Fälle -1 zurück oder falsch
Ist das Verfahren Körper ok für Das?
Danke für Antworten
EDIT Für ein besseres Verständnis, was ich brauche, ich habe Zustandsdiagramm erstellt:
Haben Sie in der 'RaiseError' Anweisung in Tsql geschaut? Wenn Sie dies mit den richtigen Parametern aufrufen, wird eine Ausnahme in Ihrem C# -Code ausgelöst. –
Das Ausführen von COMMIT TRAN wird keine Fehler erzeugen, die nach dem BEGIN TRANS erzeugt werden, wenn das die Idee ist - sie werden ausgelöst, wenn sie auftreten, so dass sie ungerade zu TRY/CATCH a COMMIT –
Wenn Sie nach einem BEGIN TRAN RÜCKKEHREN, lassen Sie es beide uncommitted & entrolledback - Siehe http://www.sommarskog.se/error_handling/Part1.html für allgemeine Muster. –