如下是一个简单的 while 循环的片断例子
while(@count<>0)
begin
    update table1 set a='b' where id=@count
    set @e=@e+@@error
    begin


       --我是希望在此,如果本次循环发生异常,那么继续下一次循环,可是问题来,他一旦到这发生错误,并不直接执行下一次循环,而是整个存储过程都停止了
        -- 怎么办我的是希望如果再这发生错误,那么就跳出本次循环执行下次循环,那么这应该怎么改呢??

 
      @count=@count-1
       continue
    end
    @count=@count-1
end

解决方案 »

  1.   

    不知道你的sqlserver 用的什么版本 如果是2005可以这么写BEGIN TRY
         { sql_statement | statement_block }
    END TRY
    BEGIN CATCH
         { sql_statement | statement_block }
    END CATCH
      

  2.   

    在While循环中更新table的异常,其实就是DB报出的错误,只要你能抓到这个错误就行,例如:raise_application_error(-20009,'出错信息提示');;我们用的是Oracle,对SQL Server的DB错误类型不甚了解,希望对LZ有用;
      

  3.   

    虽然sql可以捕获异常,不建议这么做