有一种ORACLE支持的变量类型是table,自己发挥吧

解决方案 »

  1.   

    用临时表吧,把你要返回的东西都存进去,直接操作临时表,返回一个记录集
    如下:
    create procedure pro
    as
    str varhcar2(50);
    begin
    str:='CREATE GLOBAL TEMPORARY TABLE TABLENAME (
       COL1  VARCHAR2(10),
       COL2  NUMBER
    ) ON COMMIT PRESERVE ROWS ';
    execute immediate str;
    end;
    /在Oracle8i中,可以创建以下两种临时表:
    1、会话特有的临时表
       CREATE GLOBAL TEMPORARY <TABLE_NAME> (<column specification>)
       ON COMMIT PRESERVE ROWS;2、事务特有的临时表
       CREATE GLOBAL TEMPORARY <TABLE_NAME> (<column specification>)
       ON COMMIT DELETE ROWS;
      
      在Oracle中,全局临时表并不会删除,实际上你只需要建立一次.
      临时表中数据自动清空,不同的Session之间是隔离的,不许要当心相互影响,不过如果起用了连接共享的话,你要用On Commit delete rows使数据仅在事务内部有效。