有人可以解释错误

时间:2013-11-19 12:40:50

标签: oracle plsql

declare
  v_tx varchar2(100);
  type myarray is table of EMP%ROWTYPE;
  rec_a myarray;
begin
  v_tx := 'SELECT * FROM EMP';
  execute immediate v_tx
    into rec_a;
  FOR C in 1 .. rec_a.COUNT
  LOOP
    DBMS_output.put_line(rec_a.ename(C));
  END LOOP;
end;

我无法确定其中的错误,我们非常感谢任何帮助。

1 个答案:

答案 0 :(得分:2)

您的代码有两个错误:

  • 因为您要在数组中选择多行,所以需要BULK COLLECT
  • 你在循环中使用的索引变量是错误的:而不是rec_a.ename(C),你必须使用rec_a(C).ename

固定查询是:

  declare
      v_tx varchar2(100);
      type myarray is table of EMP%ROWTYPE;
      rec_a myarray;
  begin
      v_tx := 'SELECT * FROM EMP';
      execute immediate v_tx bulk collect
        into rec_a;
      FOR C in 1 .. rec_a.COUNT
      LOOP
        DBMS_output.put_line(rec_a(C).ename);
      END LOOP;
  end;