oracle merge into 的这个该怎么用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle merge into 的这个该怎么用相关的知识,希望对你有一定的参考价值。

merge into TB_SM200_sz_bak a
using tb_sm200 b
on (a.order_no=b.order_no and a.KIJUN_YM=b.KIJUN_YM)
when matched then update set
a.TATGET_AMT=b.TATGET_AMT,
a.RECP_AMT=b.RECP_AMT,
a.DELAY_AMY=b.DELAY_AMY,
a.CLOSE_YM=b.CLOSE_YM,
a.INCOME_ORGCD=b.INCOME_ORGCD,
a.income_empno=b.income_empno,
a.recp_dt=b.recp_dt,
a.comm_appym=b.comm_appym,
a.Sys_Dt=b.Sys_Dt,
a.PRECHG_AMT=b.PRECHG_AMT,
a.prechg_amt=b.prechg_amt,
a.close_YM=b.close_YM,
a.doc_no=b. doc_no,
a.slip_no=b.slip_no

where a.order_no=b.order_no;

when not matched then insert
(
a.order_no,
a.kijun_ym,
a.recp_kbn,
a.seq,
a.sale_orgcd,
a.SALE_TEAMCD,
a.SALE_EMPNO,
a.INCOME_ORGCD,
a.INCOME_TEAMCD,
a.INCOME_EMPNO,
a.SALE_KBN,
a.GOODS_CD,
a.CONT_MONTH,
a.OPTION_KBN,
a.PAY_CNT,
a.RECP_METHOD,
a.RECP_TYPE,
a.TARGET_AMT,
a.RECP_AMT,
a.DELAY_AMT,
a.RECP_YN,
a.RECP_DT,
a.COMM_APPYM,
a.USER_ID,
a.SYS_DT,
a.RECP_TGTAMT,
a.REMARK,
a.PRERECP_AMT,
a.KIJUN_YMD,
a.PRECHG_AMT,
a.TARGET_KBN,
a.PRE_SEQ,
a.CLOSE_YM,
a.RECV_EMPNO,
a.RECV_ORGCD,
a.IFSEND_DT,
a.IFPROCAN_YN,
a.BPL_CD,
a.DIMENSION1,
a.DIMENSION2,
a.DIMENSION3,
a.DIMENSION4,
a.DOC_NO,
a.SLIP_NO,
)
values (
b.order_no,
b.kijun_ym,
b.recp_kbn,
b.seq,
b.sale_orgcd,
b.SALE_TEAMCD,
b.SALE_EMPNO,
b.INCOME_ORGCD,
b.INCOME_TEAMCD,
b.INCOME_EMPNO,
b.SALE_KBN,
b.GOODS_CD,
b.CONT_MONTH,
b.OPTION_KBN,
b.PAY_CNT,
b.RECP_METHOD,
b.RECP_TYPE,
b.TARGET_AMT,
b.RECP_AMT,
b.DELAY_AMT,
b.RECP_YN,
b.RECP_DT,
b.COMM_APPYM,
b.USER_ID,
b.SYS_DT,
b.RECP_TGTAMT,
b.REMARK,
b.PRERECP_AMT,
b.KIJUN_YMD,
b.PRECHG_AMT,
b.TARGET_KBN,
b.PRE_SEQ,
b.CLOSE_YM,
b.RECV_EMPNO,
b.RECV_ORGCD,
b.IFSEND_DT,
b.IFPROCAN_YN,
b.BPL_CD,
b.DIMENSION1,
b.DIMENSION2,
b.DIMENSION3,
b.DIMENSION4,
b.DOC_NO,
b.SLIP_NO
);

这个有没有错??

参考技术A Oracle9i引入了MERGE命令,你能够在一个SQL语句中对一个表同时执行inserts和updates操作. MERGE命令从一个或多个数据源中选择行来updating或inserting到一个或多个表.在Oracle10g中MERGE有如下一些改进:
1、UPDATE或INSERT子句是可选的
2、UPDATE和INSERT子句可以加WHERE子句
3、在ON条件中使用常量过滤谓词来insert所有的行到目标表中,不需要连接源表和目标表
4、UPDATE子句后面可以跟DELETE子句来去除一些不需要的行
语法:
MERGEHINTINTO SCHEMA .TABLE T_ALIAS
USINGSCHEMA . TABLE | VIEW |SUBQUERY T_ALIAS
ON (CONDITION)
WHENMATCHEDTHEN MERGE_UPDATE_CLAUSE
WHENNOTMATCHED THEN MERGE_INSERT_CLAUSE / MERGE_DELETE_CLAUSE;
参考技术B 语法如下:
merge
into table_name
using table_view_or_query
on condition
when matched then update_clause
delete where_clause
when not matched then insert_clause

应该没错追问

http://zhidao.baidu.com/question/1110701868508866299.html

这个是新的问题。麻烦帮下我..谢谢

本回答被提问者和网友采纳

以上是关于oracle merge into 的这个该怎么用的主要内容,如果未能解决你的问题,请参考以下文章

oracle merge into 表里面的一部分数据怎样做?

Oracle merge into 的效率问题

oracle中 merge into 的用法

oracle中merge into的使用

oracle merge into用法

Oracle基础之Merge into