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?

InformationsquelleAutor User | 2011-07-01
Schreibe einen Kommentar