forall没有这个功能.DECLARE TYPE NumList IS VARRAY(15) OF NUMBER; depts NumList := NumList(); BEGIN -- fill varray here ... FORALL j IN 6..10 -- bulk-bind middle third of varray UPDATE emp SET sal = sal * 1.10 WHERE deptno = depts(j); END;
我想实现这样的功能: create table temp(name varchar2(10),sal number(10)); create tem(name varchar2(8),...,sal number(6)); declare d temp%rowtype; begin select name,sal into d.name,d.sal from tem; insert into tem values (d); end; 代码可能有问题,但思路就是这样的,因为需要检索的列数不是只有两列,而建立一些参数存放再转的话,就负责多了,那样同时对insert语句的调试又增加了不少工作量。所以,如果能够实现这样的功能的话,我们的目的就达到了
create table temp(name varchar2(10),sal number(10)); create tem(name varchar2(8),...,sal number(6)); declare d temp%rowtype; begin select name,sal , , , , , , into d from tem; insert into tem values (d.name,d.sal); end;通过
insert 语句不能指定为行变量吗?这样就不需要一个一个成员的列出来,而如: insert into tem values (d),直接赋值行变量
TYPE NumList IS VARRAY(15) OF NUMBER;
depts NumList := NumList();
BEGIN
-- fill varray here
...
FORALL j IN 6..10 -- bulk-bind middle third of varray
UPDATE emp SET sal = sal * 1.10 WHERE deptno = depts(j);
END;
create table temp(name varchar2(10),sal number(10));
create tem(name varchar2(8),...,sal number(6));
declare
d temp%rowtype;
begin
select name,sal into d.name,d.sal from tem;
insert into tem values (d);
end;
代码可能有问题,但思路就是这样的,因为需要检索的列数不是只有两列,而建立一些参数存放再转的话,就负责多了,那样同时对insert语句的调试又增加了不少工作量。所以,如果能够实现这样的功能的话,我们的目的就达到了
create tem(name varchar2(8),...,sal number(6));
declare
d temp%rowtype;
begin
select name,sal , , , , , , into d from tem;
insert into tem values (d.name,d.sal);
end;通过
insert into tem values (d),直接赋值行变量