如标题,有一个function 返回类型为包含行号的临时表。现在我如何按行号和列名访问这个临时表的某一行的某个列的值

解决方案 »

  1.   


    --使用游标可以返回数据集合
    --你也可以使用联合数组,返回表中批量的数据:
    SQL> set serveroutput on;
    SQL> declare
      2         type emp_type is table of varchar2(20);
      3         v_ename emp_type;
      4  begin
      5       select ename bulk collect into v_ename from emp order by sal;
      6       for i in 1..v_ename.count loop
      7           if i=1 then
      8              dbms_output.put_line('首条数据:'||v_ename(i));
      9           end if;
     10           if i>1 then
     11              dbms_output.put_line('本条数据:'||v_ename(i)||
     12              ' 上一条数据:'||v_ename(i-1));
     13           end if;
     14       end loop;
     15  end;
     16  /
       
    首条数据:SMITH
    本条数据:JAMES 上一条数据:SMITH
    本条数据:ADAMS 上一条数据:JAMES
    本条数据:WARD 上一条数据:ADAMS
    本条数据:MARTIN 上一条数据:WARD
    本条数据:MILLER 上一条数据:MARTIN
    本条数据:TURNER 上一条数据:MILLER
    本条数据:ALLEN 上一条数据:TURNER
    本条数据:CLARK 上一条数据:ALLEN
    本条数据:BLAKE 上一条数据:CLARK
    本条数据:JONES 上一条数据:BLAKE
    本条数据:FORD 上一条数据:JONES
    本条数据:SCOTT 上一条数据:FORD
    本条数据:KING 上一条数据:SCOTT
     
    PL/SQL procedure successfully completed
      

  2.   

    可以使用集合(嵌套表、可变数组),但是集合必须是全局的,在SQL环境使用create type方式建立。
    也可以使用oracle的临时表方式。