Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Как да получите sql грешка в съхранена процедура

Ето част от шаблон за запомнена процедура, който използвам:

/*  CREATE PROCEDURE...  */

DECLARE
  @ErrorMessage   varchar(2000)
 ,@ErrorSeverity  tinyint
 ,@ErrorState     tinyint

/*  Additional code  */

BEGIN TRY

/*  Your code here  */

END TRY

BEGIN CATCH
    SET @ErrorMessage  = ERROR_MESSAGE()
    SET @ErrorSeverity = ERROR_SEVERITY()
    SET @ErrorState    = ERROR_STATE()
    RAISERROR(@ErrorMessage, @ErrorSeverity, @ErrorState)

    BREAK
END CATCH

/*  Further cleanup code  */

Блоковете Try/Catch могат да бъдат трудни, но са много по-задълбочени от @@error. По-важното е, че можете да използвате различните функции error_xxx() в тях. Тук съхранявам правилното съобщение за грешка в променлива @ErrorMessage, заедно с достатъчно други данни, за да повдигна отново грешката. От тук са налични произволен брой опции; можете да направите @ErrorMessage изходна променлива, да тествате и обработвате конкретни грешки или да създавате свои собствени съобщения за грешки (или да коригирате съществуващите, за да бъдат по-ясни - може да се раздразните, когато разберете колко често искате да правите това). Ще се появят други опции.

Нещо, за което трябва да внимавате:в някои ситуации SQL ще изведе две съобщения за грешка едно след друго... и error_message() ще хване само последния, който обикновено казва нещо като "опитът за създаване на обект е неуспешен", като истинската грешка е дадена в първото съобщение за грешка. Тук идва създаването на собствено съобщение за грешка.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Възможно ли е да промените типа данни Date в Sql Server

  2. Върнете изходен параметър на съхранена процедура в друга съхранена процедура

  3. Каква е разликата между TEMPORARY TABLE и TABLE VARIABLE в SQL 2008?

  4. Как да генерирате скрипт за създаване на таблица с помощта на SQL заявка в SQL Server

  5. Типове курсори на SQL Server - Какво представляват статичните курсори в SQL Server | Урок за SQL Server / Урок за TSQL