zoukankan      html  css  js  c++  java
  • oracle--merge

    MERGE语句是Oracle9i新增的语法,用来合并UPDATE和INSERT语句。

    MERGE INTO [your table-name] [rename your table here]
    USING ([write your query here])[rename your query-sql or using just like a table]
    ON ([conditional expression here] AND [...]...)
    WHEN MATHED THEN [here you can execute some update sql or something else ]
    WHEN NOT MATHED THEN [execute something else here ! ]

    oracle10g后对merge做了一些改动:

    1、UPDATE或INSERT子句是可选的

    when mathed和when not mathed不必都写上,可以只用when mathed,也可以只用when not mathed

    2、UPDATE和INSERT子句可以加WHERE子句
    3、在ON条件中使用常量过滤谓词来insert所有的行到目标表中,不需要连接源表和目标表

    例如:merge into products p using (select * from newproducts) np on (1=0).......
    4、UPDATE子句后面可以跟DELETE子句来去除一些不需要的行

    给一个例子:

    <update id="updateOrderInfo" parameterClass="com.edai.pojo.EntityForBuyEPlan">
    MERGE INTO t_cus_order O USING dual on (user_id= #userId# and PRODUCT_TYPE=#productType#) WHEN MATCHED THEN update set INVEST_AMOUNT = INVEST_AMOUNT+#amount#, LAST_UPDATE_DATE = systimestamp, UPDATE_PER = 'HOUPURCHASE', ASSIGNMENT_STATUS ='2', CASH_VALUE = CASH_VALUE+#amount#, FROZEN_IDLE_FUNDS=FROZEN_IDLE_FUNDS+#amount#, ORDER_VALUE = ORDER_VALUE + #amount# WHEN NOT MATCHED THEN insert ( O.ORDER_ID, O.ACCT_ID, O.USER_ID, O.CREDIT_ACCT_ID, O.CASH_VALUE, O.INVEST_DATE, O.LOCK_TIME, O.INVEST_AMOUNT, O.FROZEN_IDLE_FUNDS, O.FROZEN_PRE_MATCH_FUNDS, O.FROZEN_HAS_MATCH_FUNDS, O.PRODUCT_TYPE, O.ORDER_STATE, O.CREATE_DATE, O.CREATE_PER, O.CYCLE_MATCH_TYPE, O.BUY_MEDIA, O.ASSIGNMENT_STATUS, O.ORDER_VALUE ) values( SEQ_ORDER_NUM.NEXTVAL, (select acct_id from t_cus_acct where user_id = #userId# ), #userId#, (select credit_acct_id from t_cus_acct_credit where user_id = #userId# and product_type = #productType#), #amount#, systimestamp, (select fp.base_lock_period from finance_plan@db_link_bl fp where fp.id=#productType#), #amount#, #amount#, '0', '0', #productType#, #orderState#, systimestamp, 'HOUPURCHASE', #cycleMatchType#, #buyMedia#, '2', #amount# )
    </update>
  • 相关阅读:
    [百度贴吧]飞腾1500a .VS. 龙芯3a3000: 同频实用性能对比
    内网环境安全整改简单办法
    PowerPoint储存此文件时发生错误 出现错误的问题解决方法
    灰阶
    Delphi实现窗体内嵌其他应用程序窗体
    access数据库用sql语句添加字段,修改字段,删除字段
    Bootstrap IIFE
    ZUI前段框架简介
    Win7去除桌面残影的方法
    Delphi中window消息截获的实现方式(2)
  • 原文地址:https://www.cnblogs.com/yhzh/p/5386945.html
Copyright © 2011-2022 走看看