oracle into多个变量,Oracle中merge into的使用:该命令使用一条语句从一个或者多个数据源中完成对表的更新和插入数据....

该命令使用一条语句从一个或者多个数据源中完成对表的更新和插入数据. ORACLE 9i 中,使用此命令必须同时指定UPDATE 和INSERT 关键词,ORACLE 10g 做了如下改动。

1,insert 和update是可选的

2,UPDATE 和INSERT 后面可以跟WHERE 子句

3,在ON条件中可以使用常量来insert 所有的行到目标表中,不需要连接到源表和目标表

4,UPDATE 子句后面可以跟delete 来去除一些不需要的行。

举例:

create table PRODUCTS

(

PRODUCT_ID INTEGER,

PRODUCT_NAME VARCHAR2(60),

CATEGORY VARCHAR2(60)

);

insert into PRODUCTS values (1501, 'VIVITAR 35MM', 'ELECTRNCS');

insert into PRODUCTS values (1502, 'OLYMPUS IS50', 'ELECTRNCS');

insert into PRODUCTS values (1600, 'PLAY GYM', 'TOYS');

insert into PRODUCTS values (1601, 'LAMAZE', 'TOYS');

insert into PRODUCTS values (1666, 'HARRY POTTER', 'DVD');

commit;

create table PRODUCTS_new

(

PRODUCT_ID INTEGER,

PRODUCT_NAME VARCHAR2(60),

CATEGORY VARCHAR2(60)

);

insert into PRODUCTS_new values (1666, 'HARRY POTTER', 'DVD');

commit;

select * from PRODUCTS;

select * from PRODUCTS_new;

--将PRODUCTS表中的数据导入PRODUCTS_new

MERGE INTO PRODUCTS_new p

USING PRODUCTS np

--当p.PRODUCT_ID = np.PRODUCT_ID时

ON (p.PRODUCT_ID = np.PRODUCT_ID)

--如果匹配则执行下面sql(update)

WHEN MATCHED THEN

UPDATE SET p.product_name = np.product_name

--如果不匹配则执行下面sql(insert)

WHEN NOT MATCHED THEN

insert values(np.PRODUCT_ID,np.PRODUCT_NAME,np.CATEGORY);

1.insert 和update 都带有where 字句:

--将PRODUCTS表中的数据导入PRODUCTS_new

MERGE INTO PRODUCTS_new p

USING PRODUCTS np

--当p.PRODUCT_ID = np.PRODUCT_ID时

ON (p.PRODUCT_ID = np.PRODUCT_ID)

--如果匹配则执行下面sql(update)

WHEN MATCHED THEN

UPDATE SET p.product_name = np.product_name WHERE p.category = 'DVD'

--如果不匹配则执行下面sql(insert)

WHEN NOT MATCHED THEN

insert values(np.PRODUCT_ID,np.PRODUCT_NAME,np.CATEGORY)  WHERE np.category != 'BOOKS';

2.无条件的insert:

--将PRODUCTS表中的数据导入PRODUCTS_new

MERGE INTO PRODUCTS_new p

USING PRODUCTS np

--无条件insert

ON (1=0)

--如果匹配则执行下面sql(update)

WHEN MATCHED THEN

UPDATE SET p.product_name = np.product_name

--如果不匹配则执行下面sql(insert)

WHEN NOT MATCHED THEN

insert values(np.PRODUCT_ID,np.PRODUCT_NAME,np.CATEGORY);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值