mysql 存储过程 forall_采用存储过程的方式批量更新数据

采用存储过程的方式批量更新数据,Oracle中也可采用merge-update的方式更新,不过采用如下存储过程的方式会更快些DECLARE

MAX_ROWS            NUMBER DEFAULT 5000;

ROW_ID_TABLE        DBMS_SQL.UROWID_TABLE;

DATE_TIME_TABLE      DBMS_SQL.DATE_TABLE;

CURSOR C1 IS

SELECT /*+ use_hash(t1,t2) parallel(t1,2) parallel(t2,2) */

T1.DATE_TIME, T2.ROWID

FROM TEST_TABLE_1 T1, TEST_TABLE_2 T2

WHERE T1.TABLE_ID = T2.TABLE_ID

AND T2.DATE_TIME IS NULL

AND T1.DATE_TIME IS NOT NULL

ORDER BY T2.ROWID;

BEGIN

OPEN C1;

LOOP

EXIT WHEN C1%NOTFOUND;

FETCH C1 BULK COLLECT

INTO DATE_TIME_TABLE, ROW_ID_TABLE LIMIT MAX_ROWS;

FORALL I IN 1 .. ROW_ID_TABLE.COUNT

UPDATE TEST_TABLE_2

SET DATE_TIME = DATE_TIME_TABLE(I), LCD=SYSDATE

WHERE ROWID = ROW_ID_TABLE(I);

COMMIT;

END LOOP;

CLOSE C1;

END;

/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值