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>
  • 相关阅读:
    洛谷P6218 [USACO06NOV] Round Numbers S 题解 数位DP
    Duilib的双缓冲实现,附带GDI、WTL的双缓冲实现
    关于热键HotKey与WM_KEYDOWN的一点心得
    源码不匹配,找到了xxx的副本。
    SetForegroundWindow的失效问题: 跨进程的窗口前置。
    2021年4月的一份总结
    制作msi文件,exe转msi文件。
    内存限制
    ISPRS Vaihingen 数据集解析
    Linux中sudo、su和su -命令的区别小结
  • 原文地址:https://www.cnblogs.com/yhzh/p/5386945.html
Copyright © 2011-2022 走看看