WENN RAISERROR & ZURÜCK in der Gespeicherten Prozedur
Ich habe eine gespeicherte Prozedur PROC
, der erhält einige Parameter. Wenn einer von Ihnen, @ID
ist nicht null, einer bestimmten gespeicherten Prozedur PROC_A
muss ausgeführt werden. Ansonsten PROC_B
ausgeführt werden müssen. Das problem ist, dass beide von Ihnen können Problem eine RAISERROR
, was ich will, Sie zu verbreiten durch den call-stack angezeigt werden die client-Anwendung. Jedoch, dass RAISERROR
wird nicht aufhören, den rest der PROC
gespeicherten Prozedur, wie es sollte, und da bin ich mit einer IF
Klausel, die überprüfung IF ( @@ERROR <> 0 ) RETURN
ist nicht eine option, entweder. Meine einzige Wahl zu sein scheint, mit einem TRY...CATCH
block umschließen die IF
- Klausel und rethrow die RAISERROR
innerhalb der CATCH
block, die awkwards, weil dann müsste ich die cache ERROR_MESSAGE()
, ERROR_SEVERITY()
und ERROR_STATE()
und verwenden RAISERROR
wieder.
Gibt es nicht wirklich einen eleganteren Weg?
Du musst angemeldet sein, um einen Kommentar abzugeben.
einfach ein
TRY - CATCH
block und echo wieder der ursprüngliche Fehler, das ist nicht schwer zu tun:Auch, ist es am besten Praxis, um Ihre gesamte Verfahren in einem
TRY - CATCH
, und nicht nur die externe Prozedur aufruft.