在采集电表数据的时候,可以发现有些电表设备读数会发生回滚。这时候,如果单纯的累加计算用电量,就会出现负值。当然,这也许和电表的质量有关系。

“RTQty”(当前读到的读数)、“LastQty”(上次读数)、“PrecedingQty”(前次读数)、”ErrorFlag”(错误标示)、”IncreaseQty”(增量读数)、“IncreaseQtyOlder”(前次增量读数)。

--判断错误发生标示位

if @ErrorFlag=0

begin

--错误标示位为0,那么计算本次的增量值

set @IncreaseQty=@ RTQty -@ LastQty;

end

else

begin

--错误标示位为1,

--计算当前值和上次值的增量@IncreaseQty,

--计算当前值和前次值的增量----@IncreaseQtyOlder

set @IncreaseQty= RTQty - LastQty;

set @IncreaseQtyOlder= RTQty -@RTQtyOlder;

if  @IncreaseQtyOlder>=0

begin

set @IncreaseQty=@IncreaseQtyOlder

end

end

if @IncreaseQty>=0        ---如果增量不为负数

begin

--更新指定设备的数据点位,上次数值为当前值,更新前次数值为当前值,设置错误标示为0。

update Meter set LastQty =@RTQty, PrecedingQty =@ RTQty,ErrorFlag=0  where  MeterNo=@MeterNo

--进行数据的其它计算

end

else

begin

--更新指定设备的数据点位,上次数值为当前值,设置错误标示为1。

update Meter set LastQty =@RTQty,ErrorFlag=1  where  MeterNo=@MeterNo

--错误信息插入到警报表

end

电表读数归零回滚SQL处理算法的更多相关文章

  1. mysql基于binlog回滚工具_flashback(python版本)

        update.delete的条件写错甚至没有写,导致数据操作错误,需要恢复被误操作的行记录.这种情形,其实时有发生,可以选择用备份文件+binlog来恢复到测试环境,然后再做数据修复,但是这样 ...

  2. 【MySQL】通过Binary Log简单实现数据回滚(一)

    一.前言 对,没错,我又水了好一阵子,深刻反思寄几.前段时间,工作项目上出于对excel等批量操作可能出现误操作的问题,要求提供一个能够根据操作批次进行数据回滚的能力.在开发的过程中接触到了MySQL ...

  3. MySQL误操作后如何快速回滚(转)

    本文转自http://www.cnblogs.com/dfcao/p/6147970.html#undefined 感谢作者 基本上每个跟数据库打交道的程序员(当然也可能是你同事)都会碰一个问题,My ...

  4. Entity Framework 6事务回滚

    使用EF6你有新的事务处理可以使用类似于: 复制代码 using (var context = new PostEntityContainer()) { using (var dbcxtransact ...

  5. 解析binlog生成MySQL回滚脚本

    如果数据库误操作想恢复数据.可以试试下面这个脚本.前提是执行DML操作. #!/bin/env python #coding:utf-8 #Author: Hogan #Descript : 解析bi ...

  6. SQL 事务回滚

    事务(Transaction)是并发控制的单位,是用户定义的一个操作序列.这些操作要么都做,要么都不做,是一个不可分割的工作单位.通过事务,SQL Server能将逻辑相关的一组操作绑定在一起,以便服 ...

  7. sql事务(Transaction)用法介绍及回滚实例

    sql事务(Transaction)用法介绍及回滚实例 事务(Transaction)是并发控制的单位,是用户定义的一个操作序列.这些操作要么都做,要么都不做,是一个不可分割的工作单位.通过事务, S ...

  8. 【转】mysql触发器的实战(触发器执行失败,sql会回滚吗)

    1   引言Mysql的触发器和存储过程一样,都是嵌入到mysql的一段程序.触发器是mysql5新增的功能,目前线上凤巢系统.北斗系统以及哥伦布系统使用的数据库均是mysql5.0.45版本,很多程 ...

  9. DDL, DML不是所有SQL都是可以自动回滚的

    因为DDL没有事务性,所以DDL不能回滚. 要实现自动回滚.(begin,commit,rollback),则SQL语句中只能包括DML. 这样,自动化发布就会受限规范格式. 故而,一刀切的办法是,假 ...

随机推荐

  1. Ubuntu12.10下Python(pyodbc)访问SQL Server解决方案

    一.基本原理 请查看这个网址,讲得灰常详细:http://www.jeffkit.info/2010/01/476/   二.实现步骤 1.安装linux下SQL Server的驱动程序 安装Free ...

  2. Drools5

    参考:https://wenku.baidu.com/view/a6516373f242336c1eb95e7c.html   (比较好的 但是是drl 原生的) 参考2:http://asialee ...

  3. Spring MVC 学习 之 - 配置简单demo

    1.环境参数: Maven:3.1.1 JDK  :1.6 2.项目文件结构图: 3.各文件配置: 3.1. pom.xml <project xmlns="http://maven. ...

  4. leetcode203

    /** * Definition for singly-linked list. * public class ListNode { * public int val; * public ListNo ...

  5. spring jpa sqls

    package com.example.repository; import java.util.List; import org.springframework.data.jpa.repositor ...

  6. apache启动不了, 查找错误

    今天apache启动不了, 本来以为是端口冲突, 用 cmd-> netstat -aon|findstr "80"  或 tasklist|findstr "80 ...

  7. c# 之 new 关键字

    1.实例化变量 DataTable dt  = new  DataTable(); 2.调用构造函数 class CoOrds { public int x, y; // 实例构造函数(默认构造函数) ...

  8. css常用属性总结:文本属性中的text-indent

    在网页中的文本格式中最重要的效果之一就是段落的首行文本缩进,尤其在新闻类页面,使用text-indent,任何元素都可以让首行以给定的长度缩进, 长度甚至可以是负数,这一属性的最常用方式就是段落的首行 ...

  9. java web作用域page request session application

    转载自:http://blog.csdn.net/wyd458549392147/article/details/6944481 1.page指当前页面.只在一个jsp页面里有效 . 2.reques ...

  10. JQuery:选择器、动画、AJAX请求

    选择器 1.事件编程与动画效果 一个选择器可以在概念上理解为指针.借助与JQuery库中的选择器$,线程可以获取到界面元素的引用,从而可以调用 ready().click()方法把用户事件和动作方法关 ...