小弟没用过管道输出。
应为工作需要。要把一个INDEX-BY表里的所有信息
利用管道输出。
select * from table(function);
具体应该这么做啊?

解决方案 »

  1.   

    举个例子:CREATE OR REPLACE TYPE T_TBL_CHARS is table of varchar2(50)
    /
    CREATE OR REPLACE FUNCTION func1 RETURN t_tbl_chars
        PIPELINED IS
        TYPE t IS TABLE OF VARCHAR2(100) INDEX BY PLS_INTEGER;
        t1 t;
    BEGIN
        SELECT object_id BULK COLLECT INTO t1 FROM User_Objects WHERE rownum < 10;
        FOR i IN 1 .. t1.COUNT LOOP
            PIPE ROW(t1(i));
        END LOOP;
        RETURN;
    END;
    /SQL> select * from table(func1);
     
    COLUMN_VALUE
    --------------------------------------------------
    53708
    53765
    53748
    53752
    53721
    53704
    53753
    53773
    53759
     
    9 rows selected
      

  2.   

    回 1楼 
    我先前定义INDEX-BY表是
     type typ_gwics_int_tab is table of t_gwics_int%rowtype index by binary_integer;SELECT object_id BULK COLLECT INTO t1 FROM User_Objects WHERE rownum < 10;
    这个User_Objects应该就是我那个INDEX-BY 表吧。