1. -- =============================================
  2. -- Author: Evan
  3. -- Create date: 2018614 1627
  4. -- Description: 冻结BOL不允许GI,或取消冻结
  5. -- =============================================
  6. ALTER PROCEDURE [dbo].[SP_FRU_FreezeGIByBOLorCancle]
  7. (
  8. @BOL NVARCHAR() ,
  9. @UpdateBy NVARCHAR() ,
  10. @Flag INT --0表示冻结,1表示取消,2查询未GIBOL的冻结信息
  11. )
  12. AS
  13. BEGIN
  14. --开始事务
  15. BEGIN TRANSACTION
  16. --设置一个存储报错代码的变量
  17. DECLARE @errorSum INT
  18. SET @errorSum =
  19. --在每一条涉及到数据变动的语句后都累加一次报错代码
  20. IF ( @Flag = )
  21. BEGIN
  22. UPDATE ddd WITH ( ROWLOCK )
  23. SET ddd.STATE = ,
  24. ddd.UpdateBy = @UpdateBy ,
  25. ddd.UpdateDate = GETDATE()
  26. FROM dbo.Fn_Split(@BOL, '/') fn
  27. LEFT JOIN dbo.D_ControlGIByBOL ddd ON fn.value = ddd.BOL
  28. WHERE ddd.ID IS NOT NULL;
  29. SET @errorSum += @@ERROR;
  30. INSERT INTO dbo.D_ControlGIByBOL
  31. ( ID ,
  32. BOL ,
  33. State ,
  34. CreateBy ,
  35. CreateDate
  36. )
  37. SELECT NEWID() id ,
  38. fn.value ,
  39. state ,
  40. @UpdateBy createby ,
  41. GETDATE() createdate
  42. FROM dbo.Fn_Split(@BOL, '/') fn
  43. LEFT JOIN dbo.D_ControlGIByBOL ddd ON fn.value = ddd.BOL
  44. WHERE ddd.ID IS NULL;
  45. SET @errorSum += @@ERROR;
  46.  
  47. END
  48. IF ( @Flag = )
  49. BEGIN
  50. --------------------------------------------------取消冻结
  51. UPDATE D_ControlGIByBOL WITH ( ROWLOCK )
  52. SET State = ,
  53. UpdateBy = @UpdateBy ,
  54. UpdateDate = GETDATE()
  55. WHERE BOL IN ( SELECT DISTINCT
  56. fn.value
  57. FROM dbo.Fn_Split(@BOL, '/') fn )
  58. SET @errorSum += @@ERROR;
  59. END
  60. --报错代码不为0表示在执行上述sql时出现错误,回滚事务,撤销所有更改
  61. IF ( @errorSum <> )
  62. BEGIN
  63. SELECT '执行错误:' + CAST(@errorSum AS VARCHAR());
  64. ROLLBACK TRANSACTION
  65. END
  66. ELSE
  67. --报错代码为0表示无报错信息,可以执行更改操作
  68. BEGIN
  69. IF ( @Flag = )
  70. BEGIN
  71. SELECT '批量冻结成功';
  72. END
  73. IF ( @Flag = )
  74. BEGIN
  75. SELECT '批量取消冻结成功';
  76. END
  77. IF ( @Flag = )
  78. BEGIN
  79. SELECT ddd.BOL,ddd.CreateBy,ddd.CreateDate,ddd.UpdateBy,ddd.UpdateDate,
  80. CASE WHEN ddd.State= THEN '冻结'
  81. WHEN ddd.State= THEN '未冻结'
  82. ELSE '异常'
  83. END as State
  84. FROM dbo.D_ControlGIByBOL ddd
  85. WHERE ddd.State =
  86. ORDER BY CreateDate DESC
  87. END
  88. COMMIT TRANSACTION
  89. END
  90. 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. 【机器学习】k近邻算法(kNN)

    一.写在前面 本系列是对之前机器学习笔记的一个总结,这里只针对最基础的经典机器学习算法,对其本身的要点进行笔记总结,具体到算法的详细过程可以参见其他参考资料和书籍,这里顺便推荐一下Machine Le ...

  2. Python服务Debian打包新思路

    此文已由作者张耕源授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. Debian 打包一直是比较冷僻的技术,大部分同学都不会接触到它. 但是我们 Debian 服务器上安装的各 ...

  3. 如何使用jmeter连接数据库并提取数据库中的值作为参数,与响应信息中提取的值进行比较

    思路: 连接数据库 获取数据库返回的数据 获取接口返回的数据 两者返回数据进行对比验证 连接数据库 1.jmeter要链接mysql数据库,首先得下载mysql jdbc驱动包(注:驱动包的版本一定要 ...

  4. IDEA Maven Mybatis generator 自动生成代码(实例讲解)(转)

    IDEA Maven Mybatis generator 自动生成代码(实例讲解) MyBatis Generator • 简称MBG,是一个专门为MyBatis框架使用者定制的代码生成器,可以快速的 ...

  5. Weekly Contest 112

    945. Minimum Increment to Make Array Unique Given an array of integers A, a move consists of choosin ...

  6. 3dmax导出缩放

    参考 http://blog.dou.li/unity3d-import-3dmax-model-scale.html http://blog.csdn.net/pdw_jsp/article/det ...

  7. 洛谷 P2731 骑马修栅栏 Riding the Fences

    P2731 骑马修栅栏 Riding the Fences 题目背景 Farmer John每年有很多栅栏要修理.他总是骑着马穿过每一个栅栏并修复它破损的地方. 题目描述 John是一个与其他农民一样 ...

  8. nodejs动态路由

    主要功能:根据输入路由的不同,加载访问不同的HTML页面 在这里我不得不说webstorm真的是一个很棒的开发工具,我学习nodejs也是用的它. 文件目录: first_server.js: 首先我 ...

  9. .Net WebApi接口Swagger集成简单使用

    Swagger介绍 Swagger 是一款RESTFUL接口的.基于YAML.JSON语言的文档在线自动生成.代码自动生成的工具.而我最近做的项目用的是WebAPI,前后端完全分离,这时后端使用Swa ...

  10. urlencode()和urldecode()

    urlencode()函数原理就是首先把中文字符转换为十六进制,然后在每个字符前面加一个标识符%.一般用在url链接地址编码urldecode()函数与urlencode()函数原理相反,用于解码已编 ...