05 Oktober 2007

sql 2000, error handling

Dalam pl/sql Oracle dikenal exception yang digunakan untuk menangkap error yang terjadi pada eksekusi stored procedure dan melakukan tindakan yang didefinisikan jika terjadi eksekusi gagal atau error, karena perilaku Oracle yang akan keluar dari eksekusi suatu blok jika ditemukan error dalam blok tersebut. Bentuk umum exception:

BEGIN
sql statement ... ;
sql statement ... ;
sql statement ... ;
EXCEPTION WHEN .....
sql statement ... ;
sql statement ... ;
END;

Dalam stored procedure yang panjang hingga ribuan line, blok ini sangat berguna baik untuk debugging maupun error notification dalam lingkungan produksi. Kondisi yang sebaliknya ada di MS SQL Server 2000. RDBMS server ini belum menyediakan blok error handling seperti di pl/sql untuk bahasa stored procedure-nya yaitu T-Sql (Transact-SQL). Namun hal tersebut ditunjang dengan perilaku sql server yang tidak akan kaluar dari eksekusi stored procedure meski ditemukan error pada programnya (pada banyak kasus, tidak semuanya), sql server akan meneruskan eksekusi line berikutnya hingga eksekusi selesai. Hal yang dapat kita lakukan untuk mencegah eksekusi berakhir sebelum waktunya atau untuk mendapatkan error notification adalah menggunakan variable @@error atau cek return value dari eksekusi yang kita anggap kritikal. Jika eksekusi sukses, return value yang kita dapat adalah 0, selain itu adalah nilai error yang sedang terjadi. Contoh blok

declare @hasil int
begin
EXECUTE @hasil = nama_stored_procedure @var1, @var2, @var3
IF @hasil <> 0
begin
print 'ini error'
end
else
begin
print 'eksekusi berhasil'
end
end


Dalam rilis berikutnya (MS SQL Server 2005), microsoft menyertakan blok error handling seperti di pl/sql yaitu TRY ... CATCH, bentuk umumnya adalah

BEGIN TRY
sql statement ...
sql statement ...
sql statement ...
END TRY
BEGIN CATCH
sql statement ...
sql statement ...
END CATCH

saya belum pernah mencoba blok ini, saran sangat diharapkan, semoga bermanfaat :D

referensi : http://www.sommarskog.se/error-handling-II.html

7 komentar:

osinaga mengatakan...

puisinya bagus banget bang iway..
ini sajak aabb - aabb bukan ya?
atau sajak punden berundak-undak?

btw yg spt ini ga bakal keluar di tes pengetahuan khusus deh :)

Vina Revi mengatakan...

btw, iklan yang mana yang bikin gak tahan ya, mas? hehe! sumpe, aku gak mudeng.

venus mengatakan...

mumet :(

gita mengatakan...

ga mudeng mas!!!!

iway mengatakan...

to oktav:
punden berundak? mang ni jaman megalitikum apa?

to bu dokter:
itu lho bu, saya kalo buka blog sampeyan langsung disodri iklan satu halaman penuh trus ada link "Skip this Ads" :D

to mbok v sama gita:
ya ya ya, ini bahasa planet kok, aku juga kadang tomblo ga ngerti-ngerti

Bangsari mengatakan...

BEGIN TRY
sql statement ...
sql statement ...
sql statement ...
END TRY
BEGIN CATCH
sql statement ...
sql statement ...
END CATCH


puisi kok aneh gitu? hehehehe

e-ndrew mengatakan...

mumpung masih ngomongin procedure,
cek-in procedure buat ngitung modal bank asing bos.. ada yg luput tuch.. hehehe