SQL Server存储过程

存储过程结构

SET ANSI_NULLS ON:意思是空值NULL在匹配NULL条件的时候返回false,这种判断null就需要使用 is null 或者 is not null
SET ANSI_NULLS OFF:意思是空值NULL在匹配NULL条件的时候返回true
SET QUOTED_IDENTIFIER ON:意思是如果内容与sqlserver的关键字相同,允许通过加双引号、单引号的方式加以区分
SET QUOTED_IDENTIFIER OFF:意思是与sqlserver的关键字相同的,不允许加双引号,也就是自定义的不允许与关键字重复
SET NOCOUNT ON:意思是不返回影响的行数
SET NOCOUNT OFF:意思是要返回影响的行数

基本语法

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE proc_MMORDERDelByOrderId
(@ORDERID uniqueidentifier)
AS
BEGIN
   SET NOCOUNT ON;
set xact_abort on;
   BEGIN TRY---------------------开始捕捉异常
      BEGIN TRAN------------------开始事务
       DELETE FROM MMORDER WHERE ORDERID = @ORDERID
  COMMIT TRAN -------提交事务
  END TRY-----------结束捕捉异常
   BEGIN CATCH------------有异常被捕获
      IF @@TRANCOUNT > 0---------------判断有没有事务
       BEGIN
          ROLLBACK TRAN----------回滚事务
      END
  END CATCH--------结束异常处理
END
GO

添加事务处理

SQL Server在发生runtime异常时,默认会rollback引起错误的语句,而后继续执行后续语句
处理方法:
1.在事务语句最前面加上set xact_abort on,当xact_abort 选项为on 时,SQL Server在遇到错误时会终止执行并rollback 整个事务。
2.在每个单独的DML语句执行后,立即判断执行状态,并做相应处理
3.使用try...catch处理异常机制
begin tran  
begin try  
  update statement 1 ...  
  delete statement 2 ...  
end try  
begin catch  
  if @@trancount > 0  
    rollback tran  
end catch  
  if @@trancount > 0  
    commit tran  
go

本文系作者 @ 原创发布在 IT梦。未经许可,禁止转载。

喜欢()
0 0 投票数
Article Rating
订阅评论
提醒
guest
0 评论
内联反馈
查看所有评论
热门搜索
27 文章
12 评论
76 喜欢
Top
0
希望看到您的想法,请您发表评论x
()
x