你好 数组里的数据是从java里面作为存储函数的参数输入的 ,用临时表的话 估计就可以和要查询的表用where yy.id==xx.id的方式得到一个bluk collection 的返回 提高效率 我是这样设想的 你觉得呢

解决方案 »

  1.   

    打错了 是 bulk collection 
      

  2.   

    create or replace type t_test1 as object(
    id integer,
    rq date,
    mc varchar2(60)
    );create or replace type t_test_table as table of t_test1;create or replace function f_test_array(n in number default null) return t_test_table
    as 
    v_test t_test_table := t_test_table();
    begin
    for i in 1 .. nvl(n,100) loop
    v_test.extend();
    v_test(v_test.count) := t_test1(i,sysdate,'mc'||i);
    end loop;
    return v_test;
    end f_test_array;select d.* from 
    table(f_test_array(10)) tt,dept d
    where tt.id=d.deptno;
      

  3.   

    的确是可以 但是我不知道该函数返回的列名 怎么办呢? 最后的select 没看懂能稍微解释一下吗?
      

  4.   

    列名在自定义类型里面可以提前定义好
    后面的SELECT 就是简单的两表关联
    table(f_test_array(10)) 可以看做是一个表