MERGE 用法

摘要:
1、不带输出的SETANSI_NULLSONGOSETQUOTED_IDENTIFIERONGOALTERproc[dbo].[InsertShiGongJiao]@numbervarchar(100),@companyindexint,@lineidint,@stationidint,@directint,@stationnamenvarchar(50),@stationindexint,@di
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 asMERGE dbo.t_BusArrive_ShiGongJiao AStarget USING (SELECT @number n) ASsource 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    INTOUTPUT) 
ASMERGE FGHIS5_ZY.dbo.住院_编码流水号 AST 
USING(SELECT @mc n,@TYPE t) ASsource
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 用法》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇手把手教你安装Office 2019 for Mac ,安装包和破解码都给你准备好了,还装不上的话,你找我!Xamarin线程内同步下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

BarTender怎样同时打印自动日期和流水号?

大多数条形码中都会含有日期和数量信息,而且大部分都是两者兼具。有些使用BarTender软件的小伙伴,不知道怎么同时打印自动日期和流水号,即条形码中兼有自动日期和序列号,且它们都能根据打印的变化而变化。下面,小编就演示下具体的操作过程。 1、运行BarTender 2016,以Code 128码为例,在标签中适当位置生成一个条形码。双击条码,打开条形码属...

Winform通用模块之流水号生成

  打算接下来的时间里把自己觉得用起来还比较好用的通用模块,在这里向大家介绍一下,如果你有更好的想法时,也希望你不吝指点。 1、数据库表及存储过程     在介绍这个通用流水号生成的模块前,我们先来看一下其相关的表结构:   从上图中我们可以看到,该模块用到的数据表有两个,其实用一个表也可以实现这个功能,我想很多人用到的也只是一个表,但我为什么要分为两个...

sqlserver 规则式定制化生成流水号

--规则式定制化流水号,需先取最大值以及数据特殊变化字符串ALTER FUNCTION [dbo].[f_GivenNo] ( @strRule VARCHAR(50), --规则 @maxStr VARCHAR(50), --取最大号数据编号 @Astr VARCHAR(30) ,--最大号数据的产品类别字符串 @NAst...

oracle 中生成流水号 方法

思路:  通过一个流水号表,记录当前最大的流水号,以便下次取用。每次取号时,将流水号表更新成大的。 涉及的表:    流水号表hp_no:   字段 类型 TYPE_NAME VARCHAR2(100) START_NO VARCHAR2(100) CURRENT_NO VARCHAR2(100)  代码: 1)通过函数...

物联网架构成长之路(35)-利用Netty解析物联网自定义协议

一、前言   前面博客大部分介绍了基于EMQ中间件,通信协议使用的是MQTT,而传输的数据为纯文本数据,采用JSON格式。这种方式,大部分一看就知道是熟悉Web开发、软件开发的人喜欢用的方式。由于我也是做web软件开发的,也是比较喜欢这种方式。阿里的物联网平台,也是推荐这种方式。但是,但是做惯硬件开发,嵌入式开发就比较喜欢用裸TCP-Socket连接。采用...

SAP流水号

[转]编号范围对象维护Tcode: SNRO OYSM   1.Number Range的通用Tcode:SNRO   2.Number Range的通用读取函数:NUMBER_GET_NEXT 3.如有跳号现象,可以禁用对象的Buffer试试 4.几个关于Number Range的函数组:SNR0  Online maint. of number ra...