update jbxx1 t1 set t1.bh=(select bh from jbxx2 t2 where t1.id=t2.id) where exists (select 1 from jbxx2 where id = t1.id)
解决方案 »
- odbc比较奇怪的现象,提示不存在表
- oracle中databas问题!
- oracle验证模式的区别
- oracle xml(偶穷没分,帮帮忙啊)
- oracle中如何查找long raw的内容?
- dinya2003(OK) 来领分100???
- 索引无效!!我刚建的一个索引,最初还好用,怎么过了一会再查询又全表搜索了,晕!
- 高分求Oracle与SQL Server的性能对比测试报告
- 高分求助:Oracle中如何将一个字符串转换成数学表达式,up有分!!
- 在sql plus中可以执行一个存储函数吗?
- Oracle菜鸟问:不能对我自己创建的用户下的表进行插入、修改和删除!!!急死了~~!!!~~~!~!~!~!
- oracle导入到处的基本知识提问
-- 数组变量,保存查询条件和更新列值
TYPE t_id IS TABLE OF jbxx2.id%TYPE;
TYPE t_bh IS TABLE OF jbxx2.bh%TYPE;
v_t_id t_id;
v_t_bh t_bh; CURSOR c IS
SELECT id,bh FROM jbxx2;
BEGIN
OPEN c;
LOOP
-- 批量更新,一次更新10000条数据
fetch c bulk collect into v_t_id,v_t_bh LIMIT 10000;
-- 这里用forall效率更高
FORALL i IN 1 .. v_t_id.COUNT
UPDATE jbxx1 SET bh = v_t_bh(i) WHERE id = v_t_id(i);
-- 提交
COMMIT;
-- 循环退出
exit when c%NOTFOUND;
END LOOP;
COMMIT;
end;
另外象寻提到的可以用批量提交的方法处理数据。