View Full Version : مشکل در TRY-CATCH
fakhravari
پنج شنبه 23 خرداد 1392, 03:51 صبح
با سلام
BEGIN TRY
SELECT * from NoTable
END TRY
BEGIN CATCH
SELECT * from [Management_Objects]
END CATCH
چرا نمیتونه select داخل CATCH بیاره:متفکر:
خطای Invalid object name 'NoTable'.
xvahid
پنج شنبه 23 خرداد 1392, 06:18 صبح
ربطی به Try Catch نداره. شما جدولی به نام NoTable در DB تون دارین؟
fakhravari
پنج شنبه 23 خرداد 1392, 11:21 صبح
پس اصل TRY-CATCH کارش چی هست؟
وقتی نمیتونه بلوک بعدی اجرا کنه!
Mahmoud.Afrad
پنج شنبه 23 خرداد 1392, 18:29 عصر
TRY-CATCH برای خطاهای زمان اجراست در حالی که کد شما خطای زمان کامپایل(خطای لغوی یه جورایی) داره.
اگر منظورت از این کدی که گذاشتی اینه که کار TRY-CATCH رو متوجه بشی خب باید یک خطای زمان اجرا در try ایجاد کنی.
مثلا تقسیم بر صفر:
BEGIN TRY
select (10/0)
END TRY
BEGIN CATCH
SELECT * from [Management_Objects]
END CATCH
یا :
BEGIN TRY
RAISERROR('' , 99999 , 99999)
END TRY
BEGIN CATCH
SELECT * from [Management_Objects]
END CATCH
در این حالات catch اجرا میشه.
fakhravari
پنج شنبه 23 خرداد 1392, 21:41 عصر
خب ببیند کد من
BEGIN TRY
select * from [T1].dbo.[Management_Objects]
EXCEPT
select * from [T2].dbo.[Management_Objects]
END TRY
BEGIN CATCH
SELECT
N'تعداد فیلد های این جدول برابر نیست',
ERROR_NUMBER() AS ErrorNumber,
ERROR_SEVERITY() AS ErrorSeverity,
ERROR_STATE() AS ErrorState,
ERROR_PROCEDURE() AS ErrorProcedure,
ERROR_LINE() AS ErrorLine,
ERROR_MESSAGE() AS ErrorMessage
END CATCH;
اگر ساختار یکی نباشه خطا میده.
چطوری میشه تویCATCH انداختش؟
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.