PDA

View Full Version : سوال: ساختاری مانند Try...Catch در SQL



علیرضا حسن زاده
شنبه 03 مهر 1389, 08:57 صبح
سلام
آیا ساختاری مانند try...catch در دستورات SQL وجود داره که بشه با اون نوع Error تشخیص داد و بر اساس اون تصمیم گیری کرد؟

مثلا وقتی کاربر داده تکراری وارد میکنه یه خطا تو SQL Server ایجاد میشه و اون به برنامه اجرا کننده منتقل میشه من معمولا خطا ها رو با riase error به برنامه منتقل می کنم که متن اون رو هم فارسی می نویسم و تو Exception برنامه فقط پیامی رو که از SQLServer فرستاده شده رو نمایش می دم ولی همیشه با عنوان "خطا در اجرای دستور" الان می خوام بتونم که با توجه به نوع خطا پیام مناسبی رو بفرستم

behrouzlo
شنبه 03 مهر 1389, 10:03 صبح
از Sql Server 2005 به بعد ساختار Try...Catch به دستورات اضافه شده است:


BEGIN TRY

END TRY
BEGIN CATCH

END CATCH

علیرضا حسن زاده
شنبه 03 مهر 1389, 11:20 صبح
یعنی تو 2005 هم وجود داره؟ اگه بله نحوه کارش رو می تونید مختصر توضیح بدین؟

behrouzlo
شنبه 03 مهر 1389, 11:56 صبح
بله در 2005 هم وجود دارد دقیقا بیس کار مانند زبانهای برنامه نویسی است فقط با ساختاری که در بالا اشاره کردم

علیرضا حسن زاده
شنبه 03 مهر 1389, 12:01 عصر
ممکنه یه مثال بزنید مثلا در #C کلاس Exception رو داریم که تمام خطا ها توسط اون به Catch ارسال میشه تو SQL چی به catch ارسال میشه؟

behrouzlo
شنبه 03 مهر 1389, 12:17 عصر
شما می توانید از توابع مانند ERROR_NUMBER(),ERROR_MESSAGE(),ERROR_LINE(),ERROR_ PROCEDURE() برای دریافت و مدیریت خطاها در قسمت Catch استفاده کنید