declare @tpsql nvarchar(2000)  set @tpsql=N'update CMSEPA set EPA019=('+@EHC024+') WHERE EPA001=10000'
  
  EXECUTE sp_executesql @tpsql  if (@@error<>0)
  begin
    set @errorcode='计算规则设置发生错误!'
    return   
  end 这个语句执行错误就直接退出了,没有任何信息带出,(@errorcode=''),怎么捕捉得到了?

解决方案 »

  1.   

    begin try
      raiserror('生成一个错误消息',11,1)
    end try
    begin catch
      select error_message() as 错误消息,
             error_severity() as严重级别,
             error_state() as state;
    end catch
      

  2.   

    sp_executesql 的返回值就是 @@error:declare @err intexec @err = sp_executesql N'select 1/0'
    print '@@error = ' + ltrim(@err)
    /*
    消息 8134,级别 16,状态 1,第 1 行
    遇到以零作除数错误。
    @@error = 8134
    */
      

  3.   

    declare @err int
    exec @err = sp_executesql N'select 1/0'
    print '@@error = ' + ltrim(@err)
    /*
    消息 8134,级别 16,状态 1,第 1 行
    遇到以零作除数错误。
    @@error = 8134
    */