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>
  • 相关阅读:
    VBScript学习笔记
    C#调用C++库知识点
    .Net面试经验,从北京到杭州
    杭州.Net 相关大公司,希望对大家有帮助
    一起学习《C#高级编程》3--运算符重载
    一起学习《C#高级编程》2--比较对象的相等性
    一起学习《C#高级编程》1--类型的安全性
    博客园的第一天
    基于SpringCloud+Kubernetes 微服务的容器化持续交付实战
    第一节:Docker学习 — 安装
  • 原文地址:https://www.cnblogs.com/yhzh/p/5386945.html
Copyright © 2011-2022 走看看