oracle批量更新数据从另一表_ORACLE数据库使用update进行批量更新

ORACLE

数据库使用

update

进行批量更新

最近有一个涉及

ORACLE

的项目要求使用一张表的某几个列对另一张表的几个

列进行更新。现将自己的编程经验总结出来,供大家参考和交流。

要求:使用

TB_02

中的

Z01,ZD02

字段对

TB_01

中的

FD01,FD02

字段进行更

新。

CREATE TABLE TB_01

(

ID

NUMBER,

RQ

VARCHAR(6),

FD01

NUMBER(20) ,

FD02

NUMBER(20) ,

FD03

VARCHAR2(1)

)

CREATE TABLE TB_02

(

ID

NUMBER,

RQ

VARCHAR(6),

ZD01 NUMBER(20) ,

ZD01 NUMBER(20)

)

一、对

TB_01

表全表更新

TB_01.FD01=TB_02.ZD01

TB_01.FD02=TB_02.ZD02

--

更新

TB_01

表中的

FD01,FD02

字段

UPDATE TB_01 A

SET (A.FD01,FD02) = (SELECT B.ZD01,

B.ZD02

FROM TB_02 B WHERE A.ID = B.ID)

二、对

TB_01

表中

FD03='1'

的记录进行更新

UPDATE TB_01 A --

更新

ZGZK_T_DHTJ

表中的

YNSE_HJ,

应纳税额合计字

段和

YSXSSR_HJ

应税销售收入合计

UPDATE TB_01 A

SET (A.FD01,FD02) = (SELECT B.ZD01,

B.ZD02

FROM TB_02 B WHERE A.ID = B.ID) WHERE A.FD03='1'

注意:

TB_02

最好建有

ID

的索引,否则速度会很慢。

CREATE INDEX IDX_TB_02_ID on TB_02(ID);

三、根据关键字段

ID,RQ

进行更新

UPDATE (SELECT

A.FD01,A.FD02,B.ZD01,B.ZD02

WHERE A.ID=B.ID

AND A.RQ=B.RQ )

SET

A.FD01=B.ZD01,A.FD02=B.ZD02

注意:

TB_02

最好建关键字段

ID,RQ

UNIQUE

索引,否则速度会很慢。

CREATE UNIQUE

INDEX

IDX_TB_02_KEY on TB_02(ID,RQ);

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Oracle中,可以使用“FORALL”关键字批量更新数据。FORALL语句是一个PL/SQL语句,它允许您使用数组变量一次性处理多个行。使用FORALL比单独更新每一行更有效率,并且可以显著减少与数据库的交互次数。 以下是一个示例FORALL语句,它演示了如何使用批量更新更新表中的数据: ``` DECLARE TYPE id_array IS TABLE OF my_table.id%TYPE; TYPE column1_array IS TABLE OF my_table.column1%TYPE; TYPE column2_array IS TABLE OF my_table.column2%TYPE; v_ids id_array; v_column1s column1_array; v_column2s column2_array; BEGIN -- 初始化数组变量 SELECT id, column1, column2 BULK COLLECT INTO v_ids, v_column1s, v_column2s FROM my_table WHERE column3 = 'some value'; -- 批量更新数据 FORALL i IN 1..v_ids.COUNT UPDATE my_table SET column1 = v_column1s(i), column2 = v_column2s(i) WHERE id = v_ids(i); END; ``` 在上面的示例中,我们首先定义了三个数组变量v_ids、v_column1s和v_column2s,它们分别存储要更新的行的ID、column1和column2列的值。然后,我们使用BULK COLLECT子句从表中选择符合条件的行,并将它们的ID、column1和column2的值存储到数组变量中。接下来,我们使用FORALL语句在一次数据库交互中批量更新这些行的数据。 请注意,在使用FORALL语句时,必须遵循以下规则: - 数组变量的大小必须与要更新的行的数量相同。 - 所有的数组变量都必须具有相同的维度。 - 所有的数组变量都必须是一致的数据类型。 - 所有的数组变量都必须已经被初始化。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值