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 流水号;

Oracle使用:

create or replace PROCEDURE FG_BM_MakeLSH
(
v_type VARCHAR2 ,
v_mc VARCHAR2,
v_num number,
cur_OUT out sys_refcursor
)
AS
begin
--2015-12-02 CPOE_ly创建仅在测试时使用,正式环境请自行编写
MERGE into C##FGHIS5_ZY.住院_编码流水号 T
USING ( SELECT v_mc n ,v_type m FROM dual ) source
ON ( T.名称 = source.n
AND T.分类 = source.m
)
WHEN MATCHED THEN
UPDATE SET
T.流水号 = T.流水号 + v_num ,
T.更新时间 = sysdate
WHEN NOT MATCHED THEN
INSERT ( 分类, 名称, 流水号, 创建时间 )
VALUES ( v_type, v_mc, v_num, sysdate );
open cur_OUT for select 流水号 from C##FGHIS5_ZY.住院_编码流水号 where 名称=v_mc and 分类=v_type;
end;

MERGE 用法的更多相关文章

  1. Merge用法

    Merge用来从一个表中选择一些数据更新或者插入到另一个表中.而最终是用更新还是用插入的方式取决于该语句中的条件. 下面我们简单的举一个例子:   SQL> create table merge ...

  2. Oracle之Merge用法

    Merge用来从一个表中选择一些数据更新或者插入到另一个表中.而最终是用更新还是用插入的方式取决于该语句中的条件. 下面我们简单的举一个例子: SQL)) 表已创建. SQL)) 表已创建. SQL, ...

  3. TSQL Merge 用法

    在更新数据仓库时,经常需要根据源表对Target表进行数据同步,Merge 命令具有数据更新,删除,插入的功能,专门用于数据同步,并将数据的更新输出到表中.在使用Merge命令时,需要注意when n ...

  4. oracle merge用法

    动机: 想在Oracle中用一条SQL语句直接进行Insert/Update的操作. 说明: 在进行SQL语句编写时,我们经常会遇到大量的同时进行Insert/Update的语句 ,也就是说当存在记录 ...

  5. Sql server2008中merge用法

    /// <summary> /// 修改:添加条件: AND roleModule.FuncCode = tvpRoleModule.FuncCode /// </summary&g ...

  6. SQL Server merge用法

    有两个表名:source 表和 target 表,并且要根据 source 表中匹配的值更新 target 表. 有三种情况: source 表有一些 target 表不存在的行.在这种情况下,需要将 ...

  7. sqlserver——merge用法

    merge集插入,更新,删除于一体,如果要对一个表同时进行插入,更新,删除2个或3三个操作.效率要高于单个操作. merge into tableb b --被操作表using (select id, ...

  8. pandas关于其他merge用法(df1的的列索引和df2的行索引对应时候的)

  9. git rebase和git merge的用法

    http://softlab.sdut.edu.cn/blog/subaochen/2016/01/git-rebase%E5%92%8Cgit-merge%E7%9A%84%E7%94%A8%E6% ...

随机推荐

  1. CentOS 6.5下搭建LAMP环境详细步骤

    1.确认搭建LAMP所需的环境是否已经安装: [root@localhost ~]#rpm -q make gcc gcc-c++ zlib-devel libtool libtool-ltdl li ...

  2. JS --正则表达式验证、实战之邮箱模式

     JS验证格式:提高用户体验,验证文本. 需要防止程序员的代码结构更改攻击,因为web段的代码有可能会被更改,更改后JS有可能会验证不住那么,C#端在JS段通过验证的情况下,还需要进行二次验证 < ...

  3. codeforces 361 D - Friends and Subsequences

    原题: Description Mike and !Mike are old childhood rivals, they are opposite in everything they do, ex ...

  4. js 模块开发之一(模块开发价值)

    首先引用我们的今天的主角 ----<前端模块化开发的价值> 1,前端开发最常见的两个问题 ---命名冲突和文件依赖 2,对于命名冲突的基本解决办法就是学习其他语言的习惯,添加命名空间 va ...

  5. iOS相关思考题

    1.iOS如何应对APP版本升级,数据结构随之变化? 一般程序app升级时,数据库有可能发生改变,如增加表字段,增加表等. 此时有两种操作: 1 就是毫无留情的把本地旧数据库直接删掉,重新建立新的数据 ...

  6. HTML DOM appendChild() 方法

    <!DOCTYPE html> <html> <body> <ul id="myList"> <li>Coffee< ...

  7. 【python】密码生成器

    #!/usr/bin/env python#-*- coding:UTF-8 -*- import random   #导入random模块import string  #导入string模块 sal ...

  8. JavaScript初学者应注意的七个细节(转)

    http://www.cnblogs.com/lhb25/archive/2011/01/10/1932284.html 每种语言都有它特别的地方,对于JavaScript来说,使用var就可以声明任 ...

  9. 搭建DHCP服务器以及DHCP中继服务器

    一.DHCP服务器   1.首先配置DHCP服务器的IP地址(DHCP服务器网卡桥接在VMnet1)   .配置好IP后重启DHCP服务 3.安装DHCP服务器,在这里我用的是YUM安装的(关于YUM ...

  10. 用nodej和glub-watcher写的监听go 项目自动编译,很鸡肋

    glub 一般都是很轻量的编译. go太重了,改一小个部分,就编译的话,多数是编译失败. 而且很消耗性能,还没想到完美的优化办法. 暂时用个定时器 监听2秒,停止1秒,如此循环,会减少些 “无效”的编 ...