MERGE 用法

1、不带输出的SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER proc [dbo].[InsertShiGongJiao]
@number varchar(100),
@companyindex int,
@lineid int,
@stationid int,
@direct int,
@stationname nvarchar(50),
@stationindex int,
@distance int,
@type int
as
MERGE dbo.t_BusArrive_ShiGongJiao AS target
    USING (SELECT @number n)  AS source
    ON (target.number=source.n)
    WHEN MATCHED THEN
    UPDATE SET companyindex=@companyindex,
            lineid=@lineid,
            direct=@direct,
            stationname=@stationname,
            stationid=@stationid,
            stationindex=@stationindex,
            distance=@distance,
            type=@type,
            updatetime=GETDATE()
    WHEN NOT MATCHED THEN
    INSERT(number,lineid,companyindex,direct,stationid,stationname,distance,stationindex,updatetime,type)
VALUES(    @number,@lineid,@companyindex,@direct,@stationid,@stationname,@distance,@stationindex,GETDATE(),@type);

2、带输出的
ALTER PROCEDURE [dbo].[FG_BM_MakeLSH_test] (
@TYPE VARCHAR(20),
@mc    VARCHAR(12),
@lsh    INT OUTPUT)
AS
MERGE FGHIS5_ZY.dbo.住院_编码流水号 AS T
USING(SELECT @mc n,@TYPE t) AS source
ON (T.名称=source.n AND T.分类=source.t)
WHEN MATCHED THEN
UPDATE SET 流水号 = 流水号 + @lsh,更新时间=GETDATE()
WHEN NOT MATCHED THEN
INSERT(分类,名称,流水号,创建时间)VALUES (@TYPE,@mc,0,GETDATE())
OUTPUT Inserted.流水号 as 流水号;
时间: 2024-10-22 06:53:12

MERGE 用法的相关文章

oracle merge用法

动机: 想在Oracle中用一条SQL语句直接进行Insert/Update的操作. 说明: 在进行SQL语句编写时,我们经常会遇到大量的同时进行Insert/Update的语句 ,也就是说当存在记录时,就更新(Update),不存在数据时,就插入(Insert). 实战: 接下来我们有一个任务,有一个表T,有两个字段a,b,我们想在表T中做Insert/Update,如果存在,则更新T中b的值,如果不存在,则插入一条记录.在Microsoft的SQL语法中,很简单的一句判断就可以了,SQL S

Oracle之Merge用法

Merge用来从一个表中选择一些数据更新或者插入到另一个表中.而最终是用更新还是用插入的方式取决于该语句中的条件. 下面我们简单的举一个例子: SQL> create table merge_test1(a number,b varchar2(20)) 表已创建. SQL> create table merge_test2(a number,b varchar2(20)) 表已创建. SQL> insert into merge_test1 values(1,'A'); 已创建 1 行.

TSQL Merge 用法

TSQL的Merge语句不仅能够同步数据,而且能够将更新的数据输出. 一,语法 1,when match子句要求Target表中一个数据行只能被更新一次 If UPDATE is specified in the <merge_matched> clause, and more than one row of <table_source>matches a row in target_table based on <merge_search_condition>, SQ

SQL Server merge用法

有两个表名:source 表和 target 表,并且要根据 source 表中匹配的值更新 target 表. 有三种情况: source 表有一些 target 表不存在的行.在这种情况下,需要将 source 表中的行插入到 target 中. target 表有一些 source表不存在的行.这种情况下,需要从 target 表中删除行. source 表的某些行具有与 target 表中的行相同的键.但是,这些行在非键列中具有不同的值.这种情况下,需要使用来自 source 表中的值更

SQL Server特殊用法笔记

声明: 本文为转载,感谢原作者的辛勤付出. 原博客地址为:http://www.cnblogs.com/icyJ/p/SQL_Statement.html 1.MERGE用法:关联两表,有则改,无则加 create table #AAA(id int,A int,AA int,AAA int,B int) create table #BBB(A int,B int) insert into #AAA select 1,1,1,1,null union select 2,2,2,2,null un

一行一行分析JQ源码学习笔记-05

创建字符串<li></li>$.function(){var str =} merge;用法 对外组数何必 对内部 还可以json合并var arr = ["a","b","c"];var arr2 = ["d"];congse.log($.merge(arr,arr2)) 适合创建单标签$("<><>,{title:h1,html:abcd},css:"ba

Android学习之散乱的知识点

1. 安卓广告知名平台:有米,哇棒,架势,admob(国外,但效果不好)等,推荐用有米 2. src目录为源文件目录,所有可以被用户修改和创建的Java文件将被存放在这个目录下 3. xml中引用strings.xml "@string/string_name" 在java文件中用 Activity.this.getString(R.string.resource_name) 4. 内容提供者主要用于不同程序之间进行数据共享. 5. 最好用onPause()方法来保存在停止与用户交互前

常用的20个Git命令——每个都举例说明

很多人关于git命令没有形成比较统一.可以自己借鉴的模板,所以在此文中,我将讨论在使用Git时经常使用的前20个Git命令.并带有相关示例,希望能够帮助你们. 以下是涉及的Git命令: Git命令 git config 用法: git config –global user.name “[name]” 用法: git config –global user.email “[email address]” 此命令分别设置要与提交一起使用的作者姓名和电子邮件地址. git init 用法: git

Oracle MERGE INTO的用法

很多时候我们会出现如下情境,如果一条数据在表中已经存在,对其做update,如果不存在,将新的数据插入.如果不使用Oracle提供的merge语法的话,可能先要上数据库select查询一下看是否存在,然后决定怎么操作,这样的话需要写更多的代码,同时性能也不好,要来回数据库两次.使用merge的话则可以一条SQL语句完成. 1)主要功能 提供有条件地更新和插入数据到数据库表中 如果该行存在,执行一个UPDATE操作,如果是一个新行,执行INSERT操作 - 避免了分开更新 - 提高性能并易于使用