Možná to budete moci vrátit takto:
..
END TRY
BEGIN CATCH
DECLARE @errnum int;
SELECT @errnum = ERROR_NUMBER();
RAISERROR (@errnum, 16, 1);
END CATCH
S největší pravděpodobností však ztratíte význam kvůli zástupným symbolům %s etc v řádcích sys.messages pro ERROR_NUMBER()
Mohli byste udělat něco takového, abyste vložili číslo a vrátili původní zprávu
..
END TRY
BEGIN CATCH
DECLARE @errnum nchar(5), @errmsg nvarchar(2048);
SELECT
@errnum = RIGHT('00000' + ERROR_NUMBER(), 5),
@errmsg = @errnum + ' ' + ERROR_MESSAGE();
RAISERROR (@errmsg, 16, 1);
END CATCH
Prvních 5 znaků je původní číslo.
Ale pokud máte vnořený kód, skončíte s "00123 00456 Error text".
Osobně se zabývám pouze čísly výjimek SQL, abych oddělil své chyby (50 000) od chyb enginu (např. chybějící parametry), kde můj kód neběží.
Nakonec mu můžete předat návratovou hodnotu.
Zeptal jsem se na toto:Zpracování chyb serveru SQL Server:výjimky a smlouva mezi databází a klientem