zoukankan      html  css  js  c++  java
  • sql server 存储过程,事务

    1.存储过程,事务

    CREATE PROCEDURE Proc_ceshi 
        @id int,
        @name varchar(50),
        @returnval int output 
    AS
    BEGIN
        SET NOCOUNT ON;
        Set XACT_ABORT ON;
        begin tran #ceshi
        begin try
            insert into dbo.table_ceshi (id,name) values (@id,@name);
            if(@@ERROR<>0) goto error;
            insert into dbo.table_ceshi (id,name) values (1,'fan');
            if(@@ERROR<>0) goto error;
        end try
        begin catch
            print('出错了');
            print(ERROR_LINE());
            print(ERROR_MESSAGE());
            goto error;
        end catch            
        success:
            print('success');
            set @returnval=1;
            commit tran #ceshi;
            goto exittran;
        error: 
            print('error');
            set @returnval=0;
            rollback tran #ceshi;
            goto exittran;
        exittran:
            print('exittran');
            return @returnval;
    END
    GO

    调用方法:

    declare @result int;
    exec dbo.Proc_ceshi 2,'fan',@result output;
    select @result;

    解释说明:

    SET NOCOUNT ON;----关闭受影响行数,在大数据时能提高性能。

    Set XACT_ABORT ON;----ON时有错误的时候全部回滚;OFF时有错误时候,只是不提交错误语句,提交正确语句。

    捕获错误的函数有很多,如下:

    ERROR_NUMBER() 返回错误号。

    ERROR_SEVERITY() 返回严重性。

    ERROR_STATE() 返回错误状态号。

    ERROR_PROCEDURE() 返回出现错误的存储过程或触发器的名称。

    ERROR_LINE() 返回导致错误的例程中的行号。

    ERROR_MESSAGE() 返回错误消息的完整文本。该文本可包括任何可替换参数所提供的值,如长度、对象名或时间。

    欢迎指正:haizi2014@qq.com
  • 相关阅读:
    WebService学习--(一)webservice相关概念
    根据日期推断某天某周某日
    Eclipse快捷键
    Java IO学习--(五)字节和字符数组
    Java IO学习--(四)网络
    Java IO学习--(三)通道
    Java IO学习--(二)文件
    Java IO学习--(一)概述
    JVM学习--(八)java堆分析
    Linux加密、安全版块、root密码破解
  • 原文地址:https://www.cnblogs.com/hcfan/p/5160207.html
Copyright © 2011-2022 走看看