Oracle 有人能解释这个错误吗

Oracle 有人能解释这个错误吗,oracle,plsql,Oracle,Plsql,我无法确定其中的错误,非常感谢您的帮助。您的代码有两个错误: 由于要在一个数组中选择多行,因此需要进行批量收集 在循环中使用索引变量是错误的:必须使用rec\u a.ename(C)而不是rec\u a(C).ename 固定查询是: declare v_tx varchar2(100); type myarray is table of EMP%ROWTYPE; rec_a myarray; begin v_tx := 'SELECT * FROM EMP'; exec

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

您的代码有两个错误:

  • 由于要在一个数组中选择多行,因此需要进行批量收集
  • 在循环中使用索引变量是错误的:必须使用
    rec\u a.ename(C)
    而不是
    rec\u 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
    into rec_a;
  FOR C in 1 .. rec_a.COUNT
  LOOP
    DBMS_output.put_line(rec_a.ename(C));
  END LOOP;
end;
  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;