sql >> Database teknologi >  >> RDS >> Sqlserver

SQL Server:Genfrembring undtagelse med det oprindelige undtagelsesnummer

Du kan muligvis gengive det sådan her:

..
END TRY
BEGIN CATCH
    DECLARE @errnum int;
    SELECT @errnum = ERROR_NUMBER();
    RAISERROR (@errnum, 16, 1);
END CATCH

Men du mister højst sandsynligt en tabt mening på grund af %s osv. pladsholdere i sys.messages-rækkerne for ERROR_NUMBER()

Du kan gøre noget som dette for at inkludere nummeret og gengive den oprindelige besked

..
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

De første 5 tegn er det oprindelige nummer.

Men hvis du har indlejret kode, ender du med "00123 00456 fejltekst".

Personligt beskæftiger jeg mig kun med SQL-undtagelsesnumre for at adskille mine fejl (50000) fra motorfejl (f.eks. manglende parametre), hvor min kode ikke kører.

Endelig kunne du give det ud af returværdien.

Jeg stillede et spørgsmål om dette:SQL Server-fejlhåndtering:undtagelser og database-klientkontrakten



  1. Sådan laver du joinforespørgsler ved hjælp af Sequelize på Node.js

  2. Sådan opretter du en tekstfil ved hjælp af sql-script med tekst |

  3. Hvordan opdaterer man en enkelt bit af et binært tal som skifte?

  4. Sådan viser du Unicode-data med PHP