+ -
当前位置:首页 → 问答吧 → 求助,关于forall的使用,编译出错!

求助,关于forall的使用,编译出错!

时间:2011-09-09

来源:互联网

1、使用forall输出数组,编译出错,代码如下:

create or replace procedure forall_bulk_collect
as
cursor c1 is select st_id,score from scores;
type id_table is table of scores.st_id%type;
type socre_table is table of scores.score%type;
id_type id_table;
score_type socre_table;
begin
  open c1;
  fetch c1 bulk collect into id_type,score_type;
  close c1;
  forall i in id_type.first .. id_type.last 
  dbms_output.put_line('forall '||id_type(i)||' '||score_type(i)); --这句报错!!
   
  for i in 1 .. id_type.count loop
  dbms_output.put_line(id_type(i)||' '||score_type(i));
  end loop;
 
end;


错误信息比较多,就不帖了!

作者: cia00123   发布时间: 2011-09-09

forall不能直接接dbms_output吧

作者: nGX20080110   发布时间: 2011-09-09

SQL code

create or replace procedure forall_bulk_collect
as
cursor c1 is select id,value from temp1;
type id_table is table of temp1.id%type;
type socre_table is table of temp1.value%type;
id_type id_table;
score_type socre_table;
begin
  open c1;
  fetch c1 bulk collect into id_type,score_type;
  close c1;
  forall i in id_type.first .. id_type.last  
  execute immediate 'begin dbms_output.put_line(:1 || '' '' || :2);end;' using id_type(i), score_type (i);
   
  for i in 1 .. id_type.count loop
  dbms_output.put_line(id_type(i)||' '||score_type(i));
  end loop;
 
end;

作者: nGX20080110   发布时间: 2011-09-09

同意楼上的解法

作者: ulihss   发布时间: 2011-09-09