PDA

View Full Version : مقابله با خطا برای هر دستور tsql



oliya24
شنبه 13 خرداد 1391, 01:16 صبح
سلام و خسته نباشید
دوستان من میخوام توی کدهای tsql به طریقی کاری کنم که اگر مثلا در چند دستور یکی از انها دچار مشکل شد مابقی دستورات اجرا شود
مثلا در این نمونه کد
create

proc fdfq

as

declare

@se int

set

@se =0

insert

into bn (id )values(ds)

if

(@@ERROR <>0)

set

@se =@@ERROR

select

* from bn

if

(@@ERROR <>0)

set

@se =@@ERROR

return

(@se)
من ایدی جدول رو از نوع Int گرفتم ولی برای اینکه ببینم این روال کار میکنه یا نه اومدم و مقدار string رو در جدول درج کردم و زیر اون هم یه دستور سلکت نوشتم ولی موقع اجرای پروسیجر فقط و فقط مرحله خطا اجرا میشه و به قسمت سلکت نمیرسه
میخوستم از دوستان خواهش کنم که من رو در این کار یاری کنند
ممنونم

lastmory
شنبه 13 خرداد 1391, 10:16 صبح
سلام
چه خطایی میده ؟؟
از
TRY
CATCH
استفاده کن
توی Catch هم این کد رو بزار ببین خطا چیه
BEGIN TRY
/*

*/
END TRY
BEGIN CATCH

RETURN ERROR_MESSAGE() + ';' + CAST(error_number() as nvarchar(max)) + ';' + ERROR_PROCEDURE()
END CATCH

oliya24
شنبه 13 خرداد 1391, 11:16 صبح
سلام
چه خطایی میده ؟؟
از
TRY
CATCH
استفاده کن
توی Catch هم این کد رو بزار ببین خطا چیه
BEGIN TRY
/*

*/
END TRY
BEGIN CATCH

RETURN ERROR_MESSAGE() + ';' + CAST(error_number() as nvarchar(max)) + ';' + ERROR_PROCEDURE()
END CATCH


سلام اقا من میدونم مشکل کار چیه!!!دوتا دستور نوشتم که اولینش خطا میده میخوام وقتی اسکیو ال میاد و این دستورات رو کامپایل کنه دستور اول رو بگه که خطا داره و بعد بره روی دستور دوم و اون رو اجرا کنه مشکل من اینه

baktash.n81@gmail.com
سه شنبه 16 خرداد 1391, 15:10 عصر
سلام

روش هایی که من میدونم ... یا باید کدت رو بشکنی به دو تا کد یعنی بینشون GO بذاری یا اینکه قطعه رو به صورت یه Transaction بنویسی و در صورت صحیح بودن Commit اش کنی ... و بری سراغ بلوک بعد ...