MSSQL2000和MSSQL2005以上版本的异常处理语法是不相同的。

SQL Server 2005以上版本支持结构化异常处理,而MSSQL2000是不支持的。

1)先看MSSQL 2000的异常处理语法:

create proc sp_mssql2000
mssql存储过程异常处理(@TitleName nvarchar(128))
mssql存储过程异常处理as
mssql存储过程异常处理
mssql存储过程异常处理declare     @err int,
mssql存储过程异常处理
mssql存储过程异常处理begin transaction
mssql存储过程异常处理
mssql存储过程异常处理insert into...
mssql存储过程异常处理
mssql存储过程异常处理select @err = @@error
mssql存储过程异常处理if @err <> 0
mssql存储过程异常处理    GOTO ERROR_HANDLER
mssql存储过程异常处理
mssql存储过程异常处理update...set...
mssql存储过程异常处理
mssql存储过程异常处理if @err <> 0
mssql存储过程异常处理    GOTO ERROR_HANDLER
mssql存储过程异常处理
mssql存储过程异常处理GOTO EXIT_Proc
mssql存储过程异常处理
mssql存储过程异常处理ERROR_HANDLER:
mssql存储过程异常处理ROLLBACK TRANSACTION
mssql存储过程异常处理
mssql存储过程异常处理-- Log the error 
mssql存储过程异常处理insert Log (tableName, UserName, errorNumber, errorSeverity, errorState)
mssql存储过程异常处理values (@tableName, suser_sname(), @err, 0, 0)
mssql存储过程异常处理
mssql存储过程异常处理EXIT_Proc:
mssql存储过程异常处理commit tran

2)MSSQL2005的异步处理语法:

create proc sp_mssql2005
(@TitleName nvarchar(128))
as
declare @err int

BEGIN TRY

    begin transaction
    insert dbo.Authors  (au_fname, au_lname, TitleID,CommissionRating)
    values (@au_fname, @au_fname, @@IDENTITY, @CommissionRating)
    commit transaction
END TRY

BEGIN CATCH
    
    ROLLBACK TRANSACTION

    -- Log the error 
    insert  into log (UserName, tableName,     
            errorNumber, errorSeverity, errorState, errorMessage)
    values (suser_sname(), @tableName, ERROR_NUMBER(),  
            ERROR_SEVERITY(), ERROR_STATE(), ERROR_MESSAGE())   

    RAISERROR (@errormessage, 16,1)

--返回用户定义的错误信息并设系统标志,记录发生错误。

END CATCH

 

相关文章:

  • 2021-08-31
  • 2021-09-29
  • 2021-10-27
  • 2021-10-25
  • 2022-12-23
  • 2022-12-23
  • 2021-10-18
猜你喜欢
  • 2022-01-15
  • 2022-03-08
  • 2022-12-23
  • 2022-02-23
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案