我一直在搜索书籍和网页几个小时,我找不到任何真正的运气。由于Oracle或PL / SQL并不是我生命中最伟大的礼物,我会以这种方式尝试。
我想要实现的是选择表A中的所有记录,并在循环中使用“each”记录。
在伪代码中,它会是这样的。
x =来自TABLE_A的SELECT *; 对于每个x UPDATE TABLE_B其中kitten = x; 结束循环
帮助?
答案 0 :(得分:4)
如果可能,尝试将其写为单个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);
它比程序对应的更快,并且代码行更少,使其更容易理解和迁移到其他数据库。
答案 1 :(得分:2)
使用光标:
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;