利用Merge生成或更新新记录

 1 -- =============================================
 2 -- Author:        <华仔>
 3 -- Create date: <2016,6,7>
 4 -- Description:    <鱼种统计>
 5 -- Update_QT_FishTypeCount 0,0,0,0 -- 测试可否正常运行
 6 -- 维护日志:
 7 --
 8 -- =============================================
 9 ALTER PROCEDURE [dbo].[Update_QT_FishTypeCount]
10 @RoomLevel INT,
11 @FishType INT,
12 @AppearNumber INT,
13 @CatchNumber INT
14
15 AS
16 BEGIN
17
18     SET NOCOUNT ON;
19
20     BEGIN TRY--错误捕获
21     BEGIN TRAN; -- 开始事务
22
23     WITH N AS(
24         SELECT @RoomLevel AS RoomLevel
25             ,CONVERT(CHAR(10),GETDATE(),23) AS CountDate
26             ,@FishType AS FishType
27             ,@AppearNumber AS AppearNumber
28             ,@CatchNumber AS CatchNumber
29     )
30     MERGE QT_FishTypeCount AS FTC
31     USING N ON N.CountDate = FTC.CountDate AND N.RoomLevel = FTC.RoomLevel AND N.FishType = FTC.FishType
32     WHEN NOT MATCHED
33     THEN INSERT
34         (
35             [RoomLevel],
36             [CountDate],
37             [FishType],
38             [AppearNumber],
39             [CatchNumber]
40         )
41         VALUES
42         (
43             N.[RoomLevel],
44             N.[CountDate],
45             N.[FishType],
46             N.[AppearNumber],
47             N.[CatchNumber]
48         )
49     WHEN MATCHED
50     THEN UPDATE SET [AppearNumber] = FTC.[AppearNumber] + @AppearNumber,[CatchNumber] = FTC.[CatchNumber] + @CatchNumber;
51
52     COMMIT TRAN -- 执行无错误,提交事务
53     END TRY--错误捕获
54     BEGIN CATCH--错误捕获
55         ROLLBACK TRAN -- 执行出错,回滚事务
56         INSERT INTO [QPAccountsDB].[dbo].[QA_ErrorLog]
57             ([ErrorNumber]
58             ,[ErrorSeverity]
59             ,[ErrorState]
60             ,[ErrorProcedure]
61             ,[ErrorLine]
62             ,[ErrorMessage]
63             ,[ErrorTime])
64         SELECT ERROR_NUMBER()
65             ,ERROR_SEVERITY()
66             ,ERROR_STATE()
67             ,‘QPTreasureDB.dbo.Update_QT_FishTypeCount‘
68             ,ERROR_LINE()
69             ,ERROR_MESSAGE()
70             ,GETDATE()
71     END CATCH--错误捕获
72 END

时间: 2024-10-28 06:04:40

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

安装Visual Studio 2013 update 2 更新包记录和新功能简单体验

昨天下载了进4个小时,将visual studio 2013 update 2 更新包和visual studio 2013 完整安装包(包含UPDATE2)的下载完成,今天抽出时间体验一下,昨天在网上看了一下英文翻译的说明,增加了一些支持和改进,我只是针对于我所看到的来操作使用一下,看看有啥变化吧.将ISO文件加载到虚拟光驱,然后开始安装更新包,界面弹出后告诉我需要大概3个多G的硬盘空间,嗨真是大啊.点击安装开始继续安装,我截个图如下 剩下是就是等着安装完成了,整个安装过程还是比较慢的,安装的

sqlalchemy 更新column,如果存在则更新,如果不存在,则添加新记录

sqlalchemy 更新column,如果存在则更新,如果不存在,则添加新记录 class Friendship(Base): __tablename__ = 'friendship' id = Column(Integer,primary_key=True) me = Column(Integer,ForeignKey('users.id')) friend = Column(Integer,ForeignKey('users.id')) def __init__(self,me,frien

利用Shell生成Zabbix监控的数字报表

我们都知道Zabbix是一个非常强大的监控工具,我们公司呢也在用Zabbix监控所有网站的状态. 最近有一个需求,就是我们需要生成一份报告,报告里要包含前一天一整天的时间节点和对应的响应时间,这样的报告用来统计网站的可用性达到了什么水准. ? Zabbix本身自带报告功能,可是都是图像的,并没有数据格式的.虽然没有提供数据格式的报表,但是Zabbix提供了一套API,可以根据需求获取对应的数据(JSON格式),于是我就写了个脚本,用来把每个监控的网址的监控数据输出到一个CSV文件中.(后续可以用

【转】利用xcode生成的app生成可以在iphone和itouch上运行的ipa安装包

转载地址:http://blog.csdn.net/yohunl/article/details/5971252 在编译好的真机版目录下的.app文件,至于生成真机可以运行的app的方法,有两种方式,一种是交99美元获得一个证书,另外一种是破解的方式,在此不再详述,本文假设你已经生成了真机上可以运行的app包了(app包实际上是一个文件夹) 假设此安装包的名称是 hello.app,点击右键,选择 显示包内容,这样就可以打开这个hello.app文件夹了,在此文件夹中有一个info.plist文

利用json生成excel表格

起因: 之前利用反射生成excel导出,这个组件本来挺好用的,结果,坑爹的本地研发没有问题,生产环境却有问题.不知道什么原因直接导致服务重启,还重新加载类,直接导致jvm的永久区内存溢出. 异常: java.lang.OutOfMemoryError: PermGen space 说明: Perm空间被占满.无法为新的class分配存储空间而引发的异常.这个异常以前是没有的,但是在Java反射大量使用的今天这个异常比较常见了.主要原因就是大量动态反射生成的类不断被加载,最终导致Perm区被占满.

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

本文主要分为两个部分,第一部分介绍Swift的基本语法,第二部分讲解一个利用WebView来打开百度.sina等网页的小demo,如果对swift的语法不感兴趣的同学可以直接跳到第二部分来感受下Swift的魅力-(本文的demo源码已上传至github:https://github.com/iOSGeek0829/XSurfing) 一.Swift常用语法 Swift是Apple去年推出的一门新的语言,基于C和Objective-C,而没有C的一些兼容约束,它采用了安全的编程模式和添加现代的功能

asp.net(C#)利用QRCode生成二维码(续)-在二维码图片中心加Logo或图像 .

<%@ WebHandler Language="C#" Class="GetQRCode" %> using System; using System.Web; using ThoughtWorks.QRCode.Codec; using ThoughtWorks.QRCode.Codec.Data; using ThoughtWorks.QRCode.Codec.Util; using System.IO; using System.Text; us

Oracle 使用MERGE INTO 语句更新数据

/*Merge into 详细介绍MERGE语句是Oracle9i新增的语法,用来合并UPDATE和INSERT语句.通过MERGE语句,根据一张表或子查询的连接条件对另外一张表进行查询,连接条件匹配上的进行UPDATE,无法匹配的执行INSERT.这个语法仅需要一次全表扫描就完成了全部工作,执行效率要高于INSERT+UPDATE. */ /*语法: MERGE [INTO [schema .] table [t_alias] USING [schema .] { table | view |

使用hibernate更新数据库记录的信息的相关学习记录

截选代码(可能遗漏标点符号): package name.sql; import java.util.List; import name.session.HibernateSessionFactory; import org.hibernate.Query;import org.hibernate.Session;import org.hibernate.Transaction; public class SqlHelper { //增 public void save(Object obj){