我一直在搜索書籍和網絡幾個小時,我找不到任何真正的運氣。由於Oracle或PL/SQL在生活中並不是我最大的禮物,所以我嘗試這樣做。用作數組執行其他查詢的Oracle數據庫表
我想要實現的是選擇像表A中的所有記錄,並在循環中使用「每個」記錄。
在僞代碼中,它會是這樣的。
x =來自TABLE_A的SELECT * for each x UPDATE TABLE_B where kitten = x; end for loop
幫助?
我一直在搜索書籍和網絡幾個小時,我找不到任何真正的運氣。由於Oracle或PL/SQL在生活中並不是我最大的禮物,所以我嘗試這樣做。用作數組執行其他查詢的Oracle數據庫表
我想要實現的是選擇像表A中的所有記錄,並在循環中使用「每個」記錄。
在僞代碼中,它會是這樣的。
x =來自TABLE_A的SELECT * for each x UPDATE TABLE_B where kitten = x; end for loop
幫助?
使用光標:
DECLARE
cursor c1 is
select monthly_income
from employees
where name = v_name_in;
BEGIN
FOR employee_rec in c1
LOOP
update tableB set incom_val = employee_rec.monthly_income where ...;
END LOOP;
END;
或:
DECLARE
BEGIN
FOR employee_rec in (select monthly_income
from employees
where name = v_name_in)
LOOP
update tableB set incom_val = employee_rec.monthly_income where ...;
END LOOP;
END;
如果可能的話,儘量把它寫成一個UPDATE語句。
update table_b b
set (b.col1, b.col2) = (
select a.colx + 10, a.coly/18
from table_a a
where b.id = a.id);
它比程序對手更快,代碼行也更少,使得它更易於理解和遷移到其他數據庫。