Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Cara mendapatkan kesalahan sql dalam prosedur tersimpan

Berikut adalah bagian dari template prosedur tersimpan yang saya gunakan:

/*  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  */

Blok Coba/Tangkap bisa rumit tetapi jauh lebih teliti daripada @@error. Lebih penting lagi, Anda dapat menggunakan berbagai fungsi error_xxx() di dalamnya. Di sini, saya menyimpan pesan kesalahan yang tepat dalam variabel @ErrorMessage, bersama dengan data lain yang cukup untuk meningkatkan kembali kesalahan. Dari sini, sejumlah opsi tersedia; Anda dapat menjadikan @ErrorMessage sebagai variabel keluaran, menguji dan menangani kesalahan tertentu, atau membuat pesan kesalahan Anda sendiri (atau menyesuaikan yang sudah ada agar lebih jelas--Anda mungkin kesal mengetahui seberapa sering Anda ingin melakukannya). Opsi lain akan muncul di level mereka.

Sesuatu yang harus diwaspadai:dalam beberapa situasi, SQL akan melemparkan dua pesan kesalahan secara berurutan... dan error_message() hanya akan menangkap yang terakhir, yang biasanya mengatakan sesuatu seperti "usaha membuat objek gagal", dengan kesalahan nyata yang diberikan dalam pesan kesalahan pertama. Di sinilah membuat pesan kesalahan Anda sendiri.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Dapatkan Status Pekerjaan SQL Server

  2. Apa arti dari kunci asing referensi diri?

  3. SQL Server 2008 membandingkan dua tabel dalam database yang sama dan mendapatkan kolom diubah

  4. Lingkup variabel yang didefinisikan dalam blok while dalam prosedur tersimpan - SQl Server

  5. cara melewatkan parameter dengan tanda kutip