我查询到了若干记录行,保存在表变量中,然后针对这些记录,进行一系列更新和插入。
下面红色的代码就是我的意图,但是这么写是不行的,因为表变量不被当作一个表。
请问有什么办法可以实现这样的需求?(除了用全局临时表之外,那个比较复杂)
declare
TYPE emp_table_type is table of tbl_emp.n_emp_id%type INDEX BY BINARY_INTEGER;
emptable emp_table_type;
begin
select n_emp_id bulk collect into emptable from tbl_emp where n_emp_id=999;
insert tableA select * from emptable;
update tableB set xx=xx where id in (select n_emp_id from emptable);
end;
------解决方案--------------------
创建临时表或者公用表达式
------解决方案--------------------
------解决方案--------------------
declare
TYPE emp_table_type is table of tbl_emp.n_emp_id%type INDEX BY BINARY_INTEGER;
emptable emp_table_type;
begin
select n_emp_id bulk collect into emptable from tbl_emp where n_emp_id=999;
for i in 1..emptable.count()
loop
insert INTO tableA(id) VALUES(emptable(i));
update tableB set xx=xx where id =emptable(i);
end loop;
end;
------解决方案--------------------
表变量主要用于循环操作。集合变量。
或者
你的需要根本不要定义表变量。
insert into tableA select n_emp_id from tbl_emp where n_emp_id=999;
update tableB set xx=xx where id in (select n_emp_id from tbl_emp where n_emp_id=999
);