我一直在搜索书籍和网络几个小时,我找不到任何真正的运气。由于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);
它比程序对手更快,代码行也更少,使得它更易于理解和迁移到其他数据库。