-- =============================================
-- Author: Evan
-- Create date: 2018年6月14日 16点27分
-- Description: 冻结BOL不允许GI,或取消冻结
-- =============================================
ALTER PROCEDURE [dbo].[SP_FRU_FreezeGIByBOLorCancle]
(
@BOL NVARCHAR() ,
@UpdateBy NVARCHAR() ,
@Flag INT --0表示冻结,1表示取消,2查询未GI的BOL的冻结信息
)
AS
BEGIN
--开始事务
BEGIN TRANSACTION
--设置一个存储报错代码的变量
DECLARE @errorSum INT
SET @errorSum =
--在每一条涉及到数据变动的语句后都累加一次报错代码
IF ( @Flag = )
BEGIN
UPDATE ddd WITH ( ROWLOCK )
SET ddd.STATE = ,
ddd.UpdateBy = @UpdateBy ,
ddd.UpdateDate = GETDATE()
FROM dbo.Fn_Split(@BOL, '/') fn
LEFT JOIN dbo.D_ControlGIByBOL ddd ON fn.value = ddd.BOL
WHERE ddd.ID IS NOT NULL;
SET @errorSum += @@ERROR;
INSERT INTO dbo.D_ControlGIByBOL
( ID ,
BOL ,
State ,
CreateBy ,
CreateDate
)
SELECT NEWID() id ,
fn.value ,
state ,
@UpdateBy createby ,
GETDATE() createdate
FROM dbo.Fn_Split(@BOL, '/') fn
LEFT JOIN dbo.D_ControlGIByBOL ddd ON fn.value = ddd.BOL
WHERE ddd.ID IS NULL;
SET @errorSum += @@ERROR; END
IF ( @Flag = )
BEGIN
--------------------------------------------------取消冻结
UPDATE D_ControlGIByBOL WITH ( ROWLOCK )
SET State = ,
UpdateBy = @UpdateBy ,
UpdateDate = GETDATE()
WHERE BOL IN ( SELECT DISTINCT
fn.value
FROM dbo.Fn_Split(@BOL, '/') fn )
SET @errorSum += @@ERROR;
END
--报错代码不为0表示在执行上述sql时出现错误,回滚事务,撤销所有更改
IF ( @errorSum <> )
BEGIN
SELECT '执行错误:' + CAST(@errorSum AS VARCHAR());
ROLLBACK TRANSACTION
END
ELSE
--报错代码为0表示无报错信息,可以执行更改操作
BEGIN
IF ( @Flag = )
BEGIN
SELECT '批量冻结成功';
END
IF ( @Flag = )
BEGIN
SELECT '批量取消冻结成功';
END
IF ( @Flag = )
BEGIN
SELECT ddd.BOL,ddd.CreateBy,ddd.CreateDate,ddd.UpdateBy,ddd.UpdateDate,
CASE WHEN ddd.State= THEN '冻结'
WHEN ddd.State= THEN '未冻结'
ELSE '异常'
END as State
FROM dbo.D_ControlGIByBOL ddd
WHERE ddd.State =
ORDER BY CreateDate DESC
END
COMMIT TRANSACTION
END
END

一个SQL server的事务存储的更多相关文章

  1. 第十七周翻译-SQL Server中事务日志管理的阶梯,级别5:以完全恢复模式管理日志

    SQL Server中事务日志管理的阶梯,级别5:以完全恢复模式管理日志 作者:Tony Davis,2012/01/27 翻译:赖慧芳 译文: 该系列   本文是Stairway系列的一部分:SQL ...

  2. SQL Server中事务日志管理的步骤,第5级:完全恢复模式管理日志(译)

    SQL Server中事务日志管理的步骤,第5级:完全恢复模式管理日志 作者:Tony Davis,2012/01/27 系列 本文是进阶系列的一部分:SQL Server中事务日志管理的步骤 当事情 ...

  3. SQL Server中事务、锁定和阻塞

    事务是什么 在SQL Server中事务是构成一个工作逻辑单元的一系列任务,也就说多个任务放在一起执行,这些任务要么全部执行成功,要么全部执行失败. 通过事务我们可以保证数据的完整性,例如:用户A给用 ...

  4. SQL Server提高事务复制效率优化(一)总体概述

      随着公司业务的发展,数据量增长迅速,在解决Scale Out的同时,还要考虑到主从的复制延迟问题,尽量降到1s以内满足线上业务,如果不调整,SQL Server默认的配置可能平均要3s左右.生产的 ...

  5. SQL SERVER 分布式事务(DTC)

    BEGIN DISTRIBUTED TRANSACTION指定一个由 Microsoft 分布式事务处理协调器 (MS DTC) 管理的 Transact-SQL 分布式事务的起始. 语法BEGIN ...

  6. 如何读懂SQL Server的事务日志

    简介 本文将介绍SQL Server的事务日志中记录了哪一些信息,如何来读懂这些事务日志中信息.首先介绍一个微软没有公开的函数fn_dblog,在文章的接下来的部分主要用到这个函数来读取事务日志. f ...

  7. SQL Server 2016 查询存储性能优化小结

    SQL Server 2016已经发布了有半年多,相信还有很多小伙伴还没有开始使用,今天我们来谈谈SQL Server 2016 查询存储性能优化,希望大家能够喜欢 作为一个DBA,排除SQL Ser ...

  8. SQL Server 之 事务与隔离级别实例讲解

    SQL Server 之 事务与隔离级别实例讲解 SQL Server 实现了6个隔离级别来防止并发情况下,类似企图并发的访问或修改同一数据时问题的发生.本文将带你体验全部6个隔离级别.正如你接下来将 ...

  9. Step2:SQL Server 复制事务发布

    一.背景 在复制的运用场景中,事务发布是使用最为广泛的,我遇到这样一个场景:在Task数据库中有Basic与Group两个表,需要提供这两个表的部分字段给其它程序读取放入缓存,程序需要比较及时的获取到 ...

随机推荐

  1. QTreeWidget笔记

    1.QTreeWidget继承自QTreeView. 2.头文件:QTreeWidget 3.简单使用: #include "mainwindow.h" #include < ...

  2. js函数定义参数个数和实际传入参数的对比

    因为js是一种弱类型的编程语言,对数据类型的要求没有其他编程语言的要求严格,所以在定义函数的时候不需要像java和C#一样对其传入参数的类型进行定义.那么传入参数的个数有没有影响呢?今天小猪就做了个实 ...

  3. windows如何定时关闭一个程序

    方法一其实系统本身有这项功能的,打开记事本,将以下内容保存为.bat文件(将下面cmd.exe的名字改成你的音乐播放软件的exe名)@echo offTASKKILL /F /IM cmd.exe / ...

  4. lightoj1009【DFS】

    思路: 连通快+二分图,每次+二分图大的元素个数. #include<bits/stdc++.h> using namespace std; typedef unsigned long l ...

  5. linux命令之上传文件和下载文件

    lrzsz-0.12.20.tar.gz是一款linux下命令行界面上支持上传和下载的第三方工具,能够起到很方便的作用. # rz 选择文件进行上传 # sz 文件名 sz后面跟文件名可以进行文件从l ...

  6. 转载-【深度学习】深入理解Batch Normalization批标准化

      全文转载于郭耀华-[深度学习]深入理解Batch Normalization批标准化:   文章链接Batch Normalization: Accelerating Deep Network T ...

  7. JSON parse error: Cannot deserialize value of type `java.time.LocalDateTime` from String

    在使用Postman测试Spring Boot项目接口时,接口返回JSON parse error: Cannot deserialize value of type `java.time.Local ...

  8. 《深入理解Java虚拟机》笔记02 -- 垃圾收集算法

    1. 标记 - 清除算法 先标记出所有需要回收的对象,在标记完成后统一回收所有被标记的对象.它是最基础的收集算法.其他收集算法都是根据其思路,改进其不足之处. 缺点:1) 标记和清除两个阶段的效率都不 ...

  9. 【并发编程】一文带你读懂深入理解Java内存模型(面试必备)

    并发编程这一块内容,是高级资深工程师必备知识点,25K起如果不懂并发编程,那基本到顶.但是并发编程内容庞杂,如何系统学习?本专题将会系统讲解并发编程的所有知识点,包括但不限于: 线程通信机制,深入JM ...

  10. 剑指Offer的学习笔记(C#篇)-- 变态跳台阶

    题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级.求该青蛙跳上一个n级的台阶总共有多少种跳法. 一 . 解题思路. 该题目为跳台阶题目的延伸,普通跳台阶每次跳的阶数(1或2) ...