任何人都可以给出一个简单的Oracle存储过程示例,用于一次更新两个表。简单的oracle存储过程一次更新两个表的示例
1
A
回答
6
CREATE OR REPLACE PROCEDURE update_2_tables
IS
begin
update t1 set c1 = 1;
update t2 set c1 = 2;
end;
/
2
我假设你用c中的值更新表a和b。 这是PL/SQL
create or replace procedure update_one_scan as
cursor c is
select a.rowid r1, b.rowid r1, c.value_to_get
from a join b on (join conditions)
join c on (join conditions)
where conditions;
begin
for r in c
loop
update a set col_to_update=r.value_to_get where rowid=r1;
update b set col_to_update=r.value_to_get where rowid=r2;
end loop;
end;
你有源表的单次扫描的优势。您可以在Oracle SQL中执行此操作,但限制较多(您会在尝试时看到)。但这可以更快。
是一个UPDATE SELECT语句:
Create or replace Procedure update_select AS
BEGIN
update
(select a.col_to_update as c1, b.col_to_update as c2, c.value_to_get v1
from a join b on (join conditions)
join c on (join conditions)
where conditions)
set
c1 = v1, c2 = v2;
END;
+1
ORA-01776:无法通过连接视图修改多个基本表 –
+0
mmm,可能你是对的,我没有测试过。我使用了更新选择语句,但我不知道这些限制。谢谢。 –
相关问题
- 1. 如何使用单个存储过程一次更新两个表?
- 2. 更新多个表的存储过程
- 3. 简单的存储过程
- 4. 更新Oracle存储过程来介绍一个检查
- 5. 在另一个表中存储表更新历史的过程
- 6. 使用C#中的存储过程更新Oracle表有问题
- 7. Linq-to-SQL:一次更新多个存储过程
- 8. 使用存储过程的更新表
- 9. 存储过程更新SQL中的表
- 10. 存储过程更新两行
- 11. 两个表之间的存储过程?
- 12. 测试Oracle存储过程的最简单方法
- 13. 向我展示一个简单的Oracle Streams示例?
- 14. Oracle存储过程中的提示
- 15. MySQL的多个存储过程更新
- 16. 简单的存储过程的问题
- 17. 简单更新设置postgres存储过程
- 18. 每次使用带光标的存储过程更新只有一行时,每次调用存储过程时
- 19. 从单个存储过程的两个表中获取数据?
- 20. 简单的teradata存储过程
- 21. 生成简单的CRUD存储过程
- 22. 简单的DocumentDb存储过程
- 23. 在Oracle存储过程中访问另一个用户的表
- 24. 存储过程更快/更好,然后简单的查询?
- 25. Oracle - 在另一个存储过程的循环中调用存储过程
- 26. oracle存储过程
- 27. Oracle存储过程
- 28. Oracle存储过程
- 29. Oracle-存储过程
- 30. oracle更新存储过程与用户定义的异常
见:http://download.oracle.com/docs/cd/B19306_01/server.102/b14200/statements_6009.htm –
如果单去指原子(所做的所有更改,否则不会更改)您可以像schurik说的那样进行更新并拍摄提交;如果单走就意味着一个命令,或单一的单位更新处理,请参阅我的回应。 –