任何人都可以給出一個簡單的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. 我的第一個MySQL存儲過程更新兩個表有一些錯誤
- 5. 存儲過程更新兩個表不同的ID
- 6. 在單個實例中更新多個值的Oracle過程
- 7. 更新Oracle存儲過程來介紹一個檢查
- 8. 更新同一個表中存儲過程更新後和INSERT
- 9. 在另一個表中存儲表更新歷史的過程
- 10. 使用C#中的存儲過程更新Oracle表有問題
- 11. 如何在存儲過程中一次插入兩個表中?
- 12. 從另一個存儲過程調用存儲過程oracle
- 13. 使用存儲過程的更新表
- 14. 存儲過程更新SQL中的表
- 15. Linq-to-SQL:一次更新多個存儲過程
- 16. 存儲過程更新兩行
- 17. 兩個表之間的存儲過程?
- 18. 測試Oracle存儲過程的最簡單方法
- 19. Oracle存儲過程中的提示
- 20. 向我展示一個簡單的Oracle Streams示例?
- 21. MySQL的多個存儲過程更新
- 22. 簡單的存儲過程的問題
- 23. 在存儲過程中的一個簡單的查詢
- 24. 使用存儲過程從另一個表更新表
- 25. 簡單更新設置postgres存儲過程
- 26. 每次使用帶光標的存儲過程更新只有一行時,每次調用存儲過程時
- 27. 從單個存儲過程的兩個表中獲取數據?
- 28. 一個t-sql存儲過程和更新整個表或
- 29. 一個存儲過程來更新整個表或單個列太
- 30. 簡單的teradata存儲過程
見:http://download.oracle.com/docs/cd/B19306_01/server.102/b14200/statements_6009.htm –
如果單去指原子(所做的所有更改,否則不會更改)您可以像schurik說的那樣進行更新並拍攝提交;如果單走就意味着一個命令,或單一的單位更新處理,請參閱我的迴應。 –