-- =============================================
-- Author: <华仔>
-- Create date: <2016,6,7>
-- Description: <鱼种统计>
-- Update_QT_FishTypeCount 0,0,0,0 -- 测试可否正常运行
-- 维护日志:
--
-- =============================================
ALTER PROCEDURE [dbo].[Update_QT_FishTypeCount]
@RoomLevel INT,
@FishType INT,
@AppearNumber INT,
@CatchNumber INT AS
BEGIN SET NOCOUNT ON; BEGIN TRY--错误捕获
BEGIN TRAN; -- 开始事务 WITH N AS(
SELECT @RoomLevel AS RoomLevel
,CONVERT(CHAR(10),GETDATE(),23) AS CountDate
,@FishType AS FishType
,@AppearNumber AS AppearNumber
,@CatchNumber AS CatchNumber
)
MERGE QT_FishTypeCount AS FTC
USING N ON N.CountDate = FTC.CountDate AND N.RoomLevel = FTC.RoomLevel AND N.FishType = FTC.FishType
WHEN NOT MATCHED
THEN INSERT
(
[RoomLevel],
[CountDate],
[FishType],
[AppearNumber],
[CatchNumber]
)
VALUES
(
N.[RoomLevel],
N.[CountDate],
N.[FishType],
N.[AppearNumber],
N.[CatchNumber]
)
WHEN MATCHED
THEN UPDATE SET [AppearNumber] = FTC.[AppearNumber] + @AppearNumber,[CatchNumber] = FTC.[CatchNumber] + @CatchNumber; COMMIT TRAN -- 执行无错误,提交事务
END TRY--错误捕获
BEGIN CATCH--错误捕获
ROLLBACK TRAN -- 执行出错,回滚事务
INSERT INTO [QPAccountsDB].[dbo].[QA_ErrorLog]
([ErrorNumber]
,[ErrorSeverity]
,[ErrorState]
,[ErrorProcedure]
,[ErrorLine]
,[ErrorMessage]
,[ErrorTime])
SELECT ERROR_NUMBER()
,ERROR_SEVERITY()
,ERROR_STATE()
,'QPTreasureDB.dbo.Update_QT_FishTypeCount'
,ERROR_LINE()
,ERROR_MESSAGE()
,GETDATE()
END CATCH--错误捕获
END

利用Merge生成或更新新记录的更多相关文章

  1. .NET基础篇——利用泛型与反射更新实体(ADO.NET Entity Framework)(转)

    自从ADO.NET Entity Framework面世以来,受到大家的热捧,它封装了大量代码生成的工具,用户只需要建立好实体之间的关系,系统就是会为用户自动成功了Add.Delete.CreateO ...

  2. Java进阶(五十二)利用LOG4J生成服务日志

    Java进阶(五十二)利用LOG4J生成服务日志 前言 由于论文写作需求,需要进行流程挖掘.前提是需要有真实的事件日志数据.真实的事件日志数据可以用来发现.监控和提升业务流程. 为了获得真实的事件日志 ...

  3. 增加一条新记录,同时返回其自增id

    方法一.是在Insert或Update触发器中用select来返回需要的字段值.默认情况下,当insert时,触发其insert触发器,它的默认返回值是影响到的行数,语句是:select @@rowc ...

  4. C# DateTime的11种构造函数 [Abp 源码分析]十五、自动审计记录 .Net 登陆的时候添加验证码 使用Topshelf开发Windows服务、记录日志 日常杂记——C#验证码 c#_生成图片式验证码 C# 利用SharpZipLib生成压缩包 Sql2012如何将远程服务器数据库及表、表结构、表数据导入本地数据库

    C# DateTime的11种构造函数   别的也不多说没直接贴代码 using System; using System.Collections.Generic; using System.Glob ...

  5. 9.利用msfvenom生成木马

    这篇文章来介绍一下msf中一个生成木马的msfvenom模块. msfvenom命令行选项如下: 英文原版: 中文版: Options: -p, --payload <payload> 指 ...

  6. Spring事务管理----声明式:利用TransactionProxyFactoryBean生成事务代理

    通常建议采用声明式事务管理.声明式事务管理的优势非常明显:代码中无需关于关注事务逻辑,让spring声明式事务管理负责事务逻辑,声明式事务管理无需与具体的事务逻辑耦合,可以方便地在不同事务逻辑之间切换 ...

  7. Oracle 使用MERGE INTO 语句更新数据

    /*Merge into 详细介绍MERGE语句是Oracle9i新增的语法,用来合并UPDATE和INSERT语句.通过MERGE语句,根据一张表或子查询的连接条件对另外一张表进行查询,连接条件匹配 ...

  8. 黄聪:利用OpenXml生成Word2007文档(转)

    原文:http://blog.csdn.net/francislaw/article/details/7568317 版权声明:本文为博主原创文章,未经博主允许不得转载.   目录(?)[-] 一Op ...

  9. Swift轻松入门——基本语法介绍和详细地Demo讲解(利用WebView打开百度、新浪等网页)

    转载请务必注明出处(all copyright reserved by iOSGeek) 本文主要分为两个部分,第一部分介绍Swift的基本语法,第二部分讲解一个利用WebView来打开百度.sina ...

随机推荐

  1. [Jacky] 解决Ext.Net GridPanel 选择的行数据刷新后不能获取最新值

    选择GridPanel中一行数据,当变更数据时并重新刷新之后不能获取最新值,需通过如下方式获取: var internalId = gridPanel.getSelectionModel().getL ...

  2. iframe 处理

    import java.io.File; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org ...

  3. ACM2028

    Lowest Common Multiple Plus Problem Description 求n个数的最小公倍数.   input 输入包含多个测试实例,每个测试实例的开始是一个正整数n,然后是n ...

  4. Spring-demo1(初学者的尝试,2015.03.19)

    项目结构: 源代码如下: package com.bean; public interface Person { public void Speak(); } package com.bean; pu ...

  5. JavaScript- The Good Parts CHAPTER 2

    I know it well:I read it in the grammar long ago.—William Shakespeare, The Tragedy(悲剧:灾难:惨案) of Titu ...

  6. 【Hibernate】--一对一关联、联合主键

    一.数据模型 1.学生信息模型(编号.名称.身份信息) public class Student implements java.io.Serializable{ private static fin ...

  7. jq问题处理

    1.同一个事件,点击显示和隐藏 $(document).ready(function(){ $('.container .nav-header').click(function(){ var chan ...

  8. SRM659 1100pts

    绍一模拟赛的题[问题描述]小Z.小Y和小B拥有

  9. SQL 左外连接,右外连接,全连接,内连接

    原文地址  连接条件可在FROM或WHERE子句中指定,建议在FROM子句中指定连接条件.WHERE和HAVING子句也可以包含搜索条件,以进一步筛选连接条件所选的行.             连接可 ...

  10. 解决libcrypto.so.0.9.8: cannot open shared object file

    文章解决的问题:安装nginx中需要libmysql.so.16包的支持,下面介绍如何安装,并建立lib的连接. 问题展示:error while loading shared libraries: ...