SQL2000 存储过程里,如何忽略错误(也就在发生错时不退出,而是执行下一条语句)

时间:2022-12-30 05:57:38
SQL2000 存储过程里,如何忽略错误(也就在发生错时不退出,而是执行下一条语句)

   如果忽略错误,那@@ERROR 还能返回错误编号吗?

9 个解决方案

#1


  declare   @err_code   int   
    
  --执行可能有错误的代码
  select a
  select @err_code=@@error
  if @err_code<>0   
  begin   
  print   @err_code   
  end  
 

请注意,@@error只能在出错的下面一行使用。所以要及时赋值,否则会失效。
    

#2


引用 1 楼 gsyifan 的回复:
SQL codedeclare@err_codeint--执行可能有错误的代码select aselect@err_code=@@errorif@err_code<>0beginprint@err_codeend

请注意,@@error只能在出错的下面一行使用。所以要及时赋值,否则会失效。
   


但您这样处理,在执行到错误的语句 SELECT a 时就已经退出过程了。不会再执行一下语句:select @err_code=@@error

#3


会执行到@@error,具体请看微软联机丛书
http://msdn.microsoft.com/zh-cn/library/ms188790(SQL.90).aspx

#4


引用 3 楼 gsyifan 的回复:
会执行到@@error,具体请看微软联机丛书
http://msdn.microsoft.com/zh-cn/library/ms188790(SQL.90).aspx

谢谢您的热心帮助。 我的是SQL2000 微软联机丛书说的是SQL2005

#5


嗯,不会,帮顶

#6


引用 4 楼 cdq_550126 的回复:
引用 3 楼 gsyifan 的回复:
会执行到@@error,具体请看微软联机丛书
http://msdn.microsoft.com/zh-cn/library/ms188790(SQL.90).aspx



谢谢您的热心帮助。 我的是SQL2000 微软联机丛书说的是SQL2005


@@error是SQL2000可用的,就是这篇文章里说的,另外这个里面只是说2005引进了try新写法而已.请认真阅读

#7


引用 6 楼 gsyifan 的回复:
@@error是SQL2000可用的,就是这篇文章里说的,另外这个里面只是说2005引进了try新写法而已.请认真阅读

  不好意思,我在SQL2000测试了。确实不行呀!

#8


引用 6 楼 gsyifan 的回复:
@@error是SQL2000可用的,就是这篇文章里说的,另外这个里面只是说2005引进了try新写法而已.请认真阅读


   您好。谢谢您的热心帮助。刚才是我弄错误了。不好意思。
我在SQL2000试了。是可以的。 
    但能不能让产生了错误的语句,不自动抛出错误,让我自已的错误处理语句抛出自定的错误信息呢?

#9


raise error

#1


  declare   @err_code   int   
    
  --执行可能有错误的代码
  select a
  select @err_code=@@error
  if @err_code<>0   
  begin   
  print   @err_code   
  end  
 

请注意,@@error只能在出错的下面一行使用。所以要及时赋值,否则会失效。
    

#2


引用 1 楼 gsyifan 的回复:
SQL codedeclare@err_codeint--执行可能有错误的代码select aselect@err_code=@@errorif@err_code<>0beginprint@err_codeend

请注意,@@error只能在出错的下面一行使用。所以要及时赋值,否则会失效。
   


但您这样处理,在执行到错误的语句 SELECT a 时就已经退出过程了。不会再执行一下语句:select @err_code=@@error

#3


会执行到@@error,具体请看微软联机丛书
http://msdn.microsoft.com/zh-cn/library/ms188790(SQL.90).aspx

#4


引用 3 楼 gsyifan 的回复:
会执行到@@error,具体请看微软联机丛书
http://msdn.microsoft.com/zh-cn/library/ms188790(SQL.90).aspx

谢谢您的热心帮助。 我的是SQL2000 微软联机丛书说的是SQL2005

#5


嗯,不会,帮顶

#6


引用 4 楼 cdq_550126 的回复:
引用 3 楼 gsyifan 的回复:
会执行到@@error,具体请看微软联机丛书
http://msdn.microsoft.com/zh-cn/library/ms188790(SQL.90).aspx



谢谢您的热心帮助。 我的是SQL2000 微软联机丛书说的是SQL2005


@@error是SQL2000可用的,就是这篇文章里说的,另外这个里面只是说2005引进了try新写法而已.请认真阅读

#7


引用 6 楼 gsyifan 的回复:
@@error是SQL2000可用的,就是这篇文章里说的,另外这个里面只是说2005引进了try新写法而已.请认真阅读

  不好意思,我在SQL2000测试了。确实不行呀!

#8


引用 6 楼 gsyifan 的回复:
@@error是SQL2000可用的,就是这篇文章里说的,另外这个里面只是说2005引进了try新写法而已.请认真阅读


   您好。谢谢您的热心帮助。刚才是我弄错误了。不好意思。
我在SQL2000试了。是可以的。 
    但能不能让产生了错误的语句,不自动抛出错误,让我自已的错误处理语句抛出自定的错误信息呢?

#9


raise error