不能将多行数据一次性读入一个记录表吗
declare
type res_table_type is table of table_name%rowtype index by binary_integer;
res_table res_table_type;
begin
select * into res_table from table_name;
end;
这样好像不行,有人能帮忙吗?
------解决方案--------------------因为不是一个table_name,而是一个cursor.
给你一个例子:
declare
cursor emp_cursor is select ename,sal from emp
where lower(job) = lower( '&job ');
type emp_table_type is table of emp_cursor%rowtype
index by binary_integer;
emp_table emp_table_type;
i int;
BEGIN
open emp_cursor;
loop
i:=emp_cursor%rowcount+1;
fetch emp_cursor into emp_table(i);
exit when emp_cursor%notfound;
dbms_output.put_line( '姓名: '||emp_table(i).ename|| ',工资: '||emp_table(i).sal);
end loop;
END;
------解决方案--------------------楼上的不理解记录表,而且游标打开记录集也不是这样的打开法。
应该为
select * bulk collect into res_table from table_name;
对,就是应该加上bulk collect into ,当把一个集合赋值给一个集合变量(可能是索引表或记录表什么的)要用bulk collect
如果要用游标的形式,这样
declare
mycurs refcursor;
begin
open mycurs for select * from tablename;
....
end;
不过数据量大时尽量不要使用游标.