View Full Version : سوال: error در insert
shadi khanum
دوشنبه 14 دی 1388, 09:33 صبح
سلام به همه دوستان. یه سوال خیلی فوری...
من میخوام یه insert ساده انجام بدم که این insert تو یه store procedure. مشکل این که بعضی وقتها امکان داره این insert خطا بده و نتونه insert کنه، میخوام یه چیزی بنویسم که اگه اینجوری شد و error داد از کل Store procedure بیرون نیاد و بره یه insert دیگه انجام بده!!
ASKaffash
دوشنبه 14 دی 1388, 09:57 صبح
سلام
کنترل خطا در 2008 شبیه دات نت شده :
BEGIN TRY
{ sql_statement | statement_block }
END TRY
BEGIN CATCH
[ { sql_statement | statement_block } ]
END CATCH
[ ; ]
]
و اینهم 2000 :
UPDATE HumanResources.EmployeePayHistory
SET PayFrequency = 4
WHERE EmployeeID = 1;
IF @@ERROR = 547
PRINT N'A check constraint violation occurred.';
shadi khanum
دوشنبه 14 دی 1388, 10:18 صبح
من این چیزی که گفتین رو توی 2000 چک کردم، البته دستور من update نبود و insert بود ولی نشد!! :(
من بعد از insert نوشتم print @@error که کد errorشو ببینم ولی همون Error قبلی که به insert میداد رو داد و دیگه اجرا نشد. یعنی وقتی insert به error میخوره دیگه ادامه نمیده!!
Hamid.Kad
دوشنبه 14 دی 1388, 11:20 صبح
اینجا (http://afjohansson.spaces.live.com/Blog/cns!3CA68ED86F5A5970!318.entry) یه روش دیگه معرفی شده.
ولی به نظر من از 2000 دیگه دست بکشید. ورژنهای جدیدتر رو استفاده کنید.
ASKaffash
دوشنبه 14 دی 1388, 14:08 عصر
من این چیزی که گفتین رو توی 2000 چک کردم، البته دستور من update نبود و insert بود ولی نشد!! :(
من بعد از insert نوشتم print @@error که کد errorشو ببینم ولی همون Error قبلی که به insert میداد رو داد و دیگه اجرا نشد. یعنی وقتی insert به error میخوره دیگه ادامه نمیده!!
سلام
ولی درست است خودم در 2000 تست کردم مثلا :
Update YourTBL Set YourField=1
if @@Error<>0
Update YourTBL Set YourField=2
shadi khanum
دوشنبه 14 دی 1388, 18:03 عصر
بازم مرسی ولی مشکل من اینه که کارم update نیست و insert!
و insertم گاهی اوقات به دلایلی error میده و میخوام در صورت error در insert
، یه کار دیگه انجام بشه ولی با این کار وقتی error داد دیگه ادامه نمیده :(
ASKaffash
سه شنبه 15 دی 1388, 13:10 عصر
بازم مرسی ولی مشکل من اینه که کارم update نیست و insert!
و insertم گاهی اوقات به دلایلی error میده و میخوام در صورت error در insert
، یه کار دیگه انجام بشه ولی با این کار وقتی error داد دیگه ادامه نمیده :(
سلام
فرقی نمی کند من تعجب میکنم این کد پائین کامل عمل میکند و ادامه پس از خطا اجرا می شود !
Insert Into T4 (UID,UName) Values (101,'Hello')
if @@Error<>0
Begin
Insert Into LogErr (A1,A2) Values (@@Error,'Error ...')
Select 'Error In Insert'
end
else
Select 'Ok'
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.