Try catch yang baru ditambahkan di sql server 2005 dapat dengan mudah menangkap pengecualian. Saya akan melihatnya hari ini dan merangkum poin-poin penting sebagai
berikut
{pernyataan_sql |
pernyataan_blok }
AKHIR COBA
MULAI MENANGKAP
{pernyataan_sql |
pernyataan_blok }
AKHIR PENANGKAPAN
, mirip dengan penggunaan penanganan pengecualian dalam bahasa biasa, tetapi perlu dicatat bahwa SQL SERVER hanya menangkap pengecualian yang tidak serius. Ketika pengecualian seperti database tidak dapat dihubungkan, dll., Contohnya adalah: MULAI MENCOBA
DEKLARASIKAN @X INT
-- Bagi dengan nol untuk menghasilkan Error
SETEL @X = 1/0
CETAK 'Perintah setelah kesalahan di blok TRY'
AKHIR COBA
MULAI MENANGKAP
CETAK 'Kesalahan Terdeteksi'
AKHIR PENANGKAPAN
CETAK 'Perintah setelah blok TRY/CATCH'
Selain itu, try catch dapat disarangkan di Begin TRY
hapus dari Kakek di mana Nama = 'John Smith'
print 'Kakek berhasil dihapus'
Akhiri Coba
Mulai Tangkap
Cetak 'Kesalahan Menghapus Catatan Kakek-Nenek'
Mulailah Mencoba
hapus dari Induk dimana GrandParentID =
(pilih ID berbeda dari Kakek di mana Nama = 'John Smith')
Cetak 'Induk Berhasil Dihapus'
Akhiri Coba
Mulai Tangkap
cetak 'Kesalahan Menghapus Induk'
Mulailah Mencoba
hapus dari anak di mana ParentId =
(pilih ID yang berbeda dari Induk dimana GrandParentID =
(pilih ID yang berbeda dari Kakek di mana Nama = 'John Smith'))
print 'Anak Berhasil Dihapus'
Akhiri Coba
Mulai Tangkap
Cetak 'Kesalahan Menghapus Anak'
Akhiri Tangkapan
Akhiri Tangkapan
Akhiri Tangkapan
Selain itu, SQL SERVER 2005 menyediakan metode kelas kesalahan dalam mekanisme pengecualian untuk memfasilitasi debugging. Dikutip sebagai berikut, yang relatif sederhana dan tidak akan dijelaskan. Mengembalikan tingkat keparahan kesalahan.ERROR_STATE(): Mengembalikan nomor status kesalahan yang terkait dengan kesalahan.ERROR_PROCEDURE(): Mengembalikan nama prosedur atau pemicu tersimpan di mana kesalahan terjadi.ERROR_LINE(): Mengembalikan nomor baris di dalam rutinitas gagal yang menyebabkan kesalahan. ERROR_MESSAGE(): Mengembalikan teks lengkap dari pesan kesalahan. Teks tersebut menyertakan nilai yang diberikan untuk parameter apa pun yang dapat diganti, seperti panjang, nama objek, atau waktu. menggunakan metode kelas kesalahan BEGIN TRY
DEKLARASIKAN @X INT
-- Bagi dengan nol untuk menghasilkan Error
SETEL @X = 1/0
CETAK 'Perintah setelah kesalahan di blok TRY'
AKHIR COBA
MULAI MENANGKAP
CETAK 'Kesalahan Terdeteksi'
PILIH ERROR_NUMBER() Nomor ER,
ERROR_SEVERITY() Kesalahan_Keparahan,
ERROR_STATE() Keadaan_Kesalahan,
ERROR_PROCEDURE() Kesalahan_Prosedur,
ERROR_LINE() Garis_Kesalahan,
ERROR_MESSAGE() Pesan_Kesalahan
AKHIR PENANGKAPAN
CETAK 'Perintah setelah blok TRY/CATCH'
Akhirnya keluaran Error Detected
Err_Num Err_Sev Err_State Err_Proc Err_Line Err_Msg
------- ------- --------- -------------------- ------- -----------------------------------
8134 16 1 NULL 4 Bagi dengan nol kesalahan yang terjadi.
Sumber: jackyrong BLOG