譬如:
1、Table01、Table02进行关联;
2、将Table01、Table02关联的结果集与Table03的相关栏未值进行合并处理后,将满足条件的记录集放入临时表内返回;
3、问题:
3.1、应如何创建临时表来存放满足条件的记录集?
3.2、所创建的临时表是否是在存储过程执行时创建,执行完毕后自动销毁?
 

解决方案 »

  1.   

    创建临时表
    CREATE GLOBAL TEMPORARY TABLE test
            (col1 varchar2(20),
             col2 varchar2(20),
             col3 number(10,2),
          ON COMMIT DELETE ROWS;
      

  2.   

    临时表不是在存储过程中创建的,是你外部创建,跟普通表一样。
    你可以按照如下步骤进行。
    1。在程序中执行存储过程前,你设置autocommit为false,
    2。执行存储过程,往临时表插入满足条件的记录。
    3。在程序中查询临时表得到数据
    4。设置autocommit为true。
      

  3.   

    同意楼上的说法!临时表创建以后,还可以手动删除!drop table_name
      

  4.   

    先建立一个表再删除这样的动作效率是很差的,如果该存储过程被反复调用结果是灾难性的。而且一般的设计是不允许随意建表的。
    解决方法:1.改变设计,要求增加一个临时表;
    2.用table类型的变量。
    TYPE TYP_ITEM_REC IS RECORD
    (
     V_ITEM_NM       VARCHAR2(200), 
     N_RECORD_NUMBER NUMBER          
    );
    TYPE TYP_ITEM_TAB     IS TABLE OF TYP_ITEM_REC INDEX BY BINARY_INTEGER;