【问题标题】:Can someone explain the error有人可以解释错误吗
【发布时间】:2013-12-03 00:34:28
【问题描述】:
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;

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

【问题讨论】:

    标签: oracle plsql


    【解决方案1】:

    您的代码有两个错误:

    • 由于要在数组中选择多行,因此需要 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;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-06
      • 1970-01-01
      • 1970-01-01
      • 2012-05-29
      • 2010-12-13
      • 1970-01-01
      相关资源
      最近更新 更多