`

Oracle MERGE 用法

 
阅读更多

 

CREATE OR REPLACE PROCEDURE P_C(X OUT VARCHAR2,Y OUT VARCHAR2, S IN VARCHAR2) AS

  P_STR VARCHAR2(100) := 'ABCDEF';
  STR VARCHAR2(50);
  STR_SQL VARCHAR2(100);
  P_EMAIL_NAME VARCHAR2(50);
  P_EMAIL VARCHAR2(50);

BEGIN

  MERGE INTO T_INVOICE I
  USING (SELECT M.VIP_ZONE_CODE,
                M.VIP_CODE,
                M.INVOICE_YEAR_MONTH,
                M.STANDARD_MONEY_AMT,
                M.ZONE_CODE
           FROM T_MONTHLY_INVOICE M
          WHERE M.VIP_CODE = '123456') V
  ON (I.DEPT_CODE = V.ZONE_CODE)
  WHEN MATCHED THEN
    UPDATE
       SET/* I.DEPT_CODE          = V.ZONE_CODE,*/--此列不能更新,更新会报错--使用merge时要注意:作为查询条件的列(在"condition"中)是不可以被更新的(在merge_update_clause中不可更新)。
           I.CUSTOMER_CODE      = V.VIP_ZONE_CODE,
           I.STANDARD_MONEY_AMT = V.STANDARD_MONEY_AMT


  WHEN NOT MATCHED THEN

    INSERT
      (STANDARD_MONEY_AMT, CUSTOMER_CODE)
    VALUES
      (V.STANDARD_MONEY_AMT, V.VIP_CODE);

   SELECT SUBSTR(P_STR,1,4) INTO STR FROM DUAL;
   DBMS_OUTPUT.put_line(STR);
   
   STR_SQL := 'SELECT T.EMAIL_TEL,T.EMAIL_MAIL  FROM TT_EMAIL T WHERE T.EMAIL_USER = :SS';
   EXECUTE IMMEDIATE STR_SQL  INTO P_EMAIL_NAME ,P_EMAIL
    USING S;  
   DBMS_OUTPUT.put_line(P_EMAIL_NAME||P_EMAIL);
    
   EXCEPTION
     WHEN OTHERS THEN 
       DBMS_OUTPUT.put_line(SQLERRM);
END P_C;

 

分享到:
评论

相关推荐

    oracle merge 用法详解

    ### Oracle Merge 用法详解 #### 一、Oracle Merge 命令介绍 自Oracle 9i版本开始,Oracle数据库引入了一个非常强大的SQL语句——`MERGE`命令。通过这个命令,用户可以在一个单一的SQL语句中完成对表的插入(`...

    Oracle merge into用法

    在Oracle数据库中,`MERGE INTO`语句是一种非常强大的工具,它允许用户根据源表中的数据更新目标表,同时也可以插入新记录。这一特性在处理大量数据时尤其有用,因为它能够在一个步骤中完成更新和插入操作,从而提高...

    oracle merge into的使用

    标题:Oracle Merge Into 的使用 描述详解:Oracle Merge Into 是一个功能强大的SQL语句,它在Oracle数据库系统中被广泛用于处理数据同步、更新或插入操作。与传统的UPDATE和INSERT语句相比,Merge Into 提供了更为...

    Oracle中merge into的使用

    在Oracle数据库中,`MERGE INTO`语句是一种强大的数据操作工具,它允许你在一个步骤中执行更新(UPDATE)和插入(INSERT)操作,从而提高了数据处理的效率和灵活性。这个命令尤其适用于需要同步两个表的数据时,比如...

    oracle Merge 函数.doc

    "Oracle Merge 函数详解" Oracle Merge 函数是一种强大的数据操作语句,用于从一个表中选择一些数据更新或者插入到另一个表中。Merge 函数的使用方式有三种:只更新不插入、只插入不更新和既插入也更新。 Merge ...

    oracle死锁原因解决办法

    #### 四、解决Oracle死锁的方法 ##### 4.1 优化SQL语句 确保所有事务中的SQL语句按照相同的顺序执行可以减少死锁的机会。此外,还可以通过合并多个SQL语句或者调整SQL语句的执行顺序来避免死锁。 ##### 4.2 调整...

    Oracle_merge

    本文将详细介绍 Oracle 中 `MERGE` 关键字的使用方法,并结合实际示例来解析其工作原理。 #### 二、`MERGE` 语句的基本概念 在 Oracle 9i R2 版本之前,如果需要同时进行更新和插入操作,开发人员通常需要编写两条...

    浅谈Oracle数据库中Merge Into的用法.pdf

    Oracle 数据库中 Merge Into 的用法 在 Oracle 数据库中,Merge Into 语句是一种非常有用的功能,它主要用来合并 update 和 insert 语句,即用一个表中的数据来修 改或插入到另一个表中。Merge Into 语句的主要原则...

    Oracle MERGE INTO的用法示例介绍

    如果不使用Oracle提供的merge语法的话,可能先要上数据库select查询一下看是否存在,然后决定怎么操作,这样的话需要写更多的代码,同时性能也不好,要来回数据库两次.使用merge的话则可以一条SQL语句完成. 1)主要功能 ...

    oracle同一个表中使用merge.txt

    oracle同一个表中使用merge

    Mybatis批量foreach merge into的用法

    Mybatis批量foreach merge into的用法是通过Mybatis的动态SQL语法foreach循环插入实现的,这种方法可以批量插入时间价格表数据。如果某个套餐的某天的价格存在,则更新,不存在则插入。下面是该方法的详细介绍: ...

    Oracle merge合并更新函数实例详解

    在提供的示例中,我们看到如何使用MERGE语句来更新或插入数据到`t_config_related`表。假设我们要根据某个序列号(seq)来更新或插入数据: ```sql MERGE INTO t_config_related A1 USING (select '97547758-6f85-...

    oracle中merge into用法及实例解析

    Oracle中的`MERGE INTO`语句是一种强大的工具,用于整合数据操作,如更新、插入和删除,基于两个数据源的匹配条件。这个语句在处理数据仓库、数据同步或者复杂业务逻辑时非常有用。让我们详细了解一下`MERGE INTO`的...

    merge用法详解

    `MERGE`语句在Oracle数据库中是一种非常实用的DML操作,它结合了`INSERT`、`UPDATE`和`DELETE`的功能,使得在处理数据时更加高效且简洁。这个语句自Oracle 9i版本开始引入,主要用于解决在两个数据源之间进行有条件...

    oracle使用 merge

    3. **处理`DBLINK`问题**:在跨数据库链接使用`MERGE`时,需要注意Oracle 10g中一个已知的bug(Bug ID 4311273),该bug可能导致ORA-02064错误。解决方法是确保`WHEN MATCHED THEN`和`WHEN NOT MATCHED THEN`两个...

    MySQL中实现插入或更新操作(类似Oracle的merge语句)

    可以使用以下语句: 更新一个字段: INSERT INTO tbl (columnA,columnB,columnC) VALUES (1,2,3) ON DUPLICATE KEY UPDATE columnA=IF(columnB>0,1,columnA) 更新多个字段: INSERT INTO tbl (columnA,columnB,...

Global site tag (gtag.js) - Google Analytics