你那个是系统错误 呀,eg:
select convert(int,'2q')---->  isnumeric()

解决方案 »

  1.   

    SQL2000没有try...catch这样的高级异常处理功能,所以只能使用@@error来判断是否发生了异常.SQL2000中有些错误是允许使用@@error来获得的,有些错误是无法使用@@error获得的,因为这样的错误发生时会中止执行,无法运行后面的@@error语句,使得@@error语句形同虚设,所以这样的错误发生时是无法显示自定义信息的,SQLSERVER已经自作主张了.为了弥补这一缺陷,通常是在客户端应用程序中使用try...catch来捕获SQL执行中不能使用@@error检测的异常.
      

  2.   

    还有,如果楼主真的要在SQL2000中检测错误,应该将@@error放在要检测的语句之后,例如本例中:
             select convert(int,'2q')--虚拟一个错误
      set @ErrorNumber = '1001'
      set @ErrorInfo = '数据转换成功!'
               if @@error<>0
    应该为:
             select convert(int,'2q')--虚拟一个错误
               if @@error<>0      /*@@error只检测上一个执行语句是否有错*/