呵呵,我也想听一下oracle临时表的东西,要session级的临时表

解决方案 »

  1.   

    09:34:51 SQL> create global temporary table t1(a int) on commit preserve rows;表已创建。已用时间:  00: 00: 00.15
    09:34:56 SQL> create or replace procedure tes
    09:34:59   2  as
    09:34:59   3  begin
    09:34:59   4    insert into t1 values (1);
    09:34:59   5    insert into t1 values (2);
    09:34:59   6
    09:34:59   7    for a_id in 1..2 loop
    09:34:59   8       dbms_output.put_line(a_id);
    09:34:59   9    end loop;
    09:34:59  10
    09:34:59  11   commit;
    09:34:59  12  end;
    09:34:59  13  /过程已创建。已用时间:  00: 00: 00.15
    09:34:59 SQL> exec tes
    1
    2PL/SQL 过程已成功完成。已用时间:  00: 00: 00.16
      

  2.   

    在存储过程中创建临时表要看oracle的版本,必须在8.1.7以上就可以!
      

  3.   

    使用本地动态SQL语句可以在存储过程中执行DDL语句
      

  4.   

    参考一下这个:
    http://blog.csdn.net/caff/archive/2004/11/07/170980.aspx
      

  5.   


    返标游标,游标指向这个临时表。我在.net中试过。可以
      

  6.   

    转贴:作者忘了,抱歉
    11:25:05 SQL> create or replace procedure pro_temp(v_col1 varchar2,v_col2 varchar2) as
    11:25:05   2  v_num number;
    11:25:05   3  begin
    11:25:05   4  select count(*) into v_num from user_tables where table_name='T_TEMP';
    11:25:05   5  --create temporary table
    11:25:05   6  if v_num<1 then
    11:25:05   7    execute immediate 'CREATE GLOBAL TEMPORARY TABLE T_TEMP (
    11:25:05   8     COL1  VARCHAR2(10),
    11:25:05   9     COL2  VARCHAR2(10)
    11:25:05  10     ) ON COMMIT PRESERVE ROWS';
    11:25:05  11  end if;
    11:25:05  12  --insert data
    11:25:05  13  execute immediate 'insert into t_temp values('''||v_col1||''','''||v_col2||''')';
    11:25:05  14  end pro_temp;
    11:25:06  15  /过程已创建。已用时间:  00: 00: 00.4411:27:31 SQL> exec pro_temp('11','22');PL/SQL 过程已成功完成。已用时间:  00: 00: 00.43
    11:27:41 SQL> select * from t_temp;COL1       COL2
    ---------- ----------
    11         22已用时间:  00: 00: 00.16
    11:27:47 SQL> 当前session 断开以后,数据自动清空。
      

  7.   

    zoulipeng(向Oracle前进,再前进...) 呵呵,这个贴子我看到你已经贴了两个地方了,不错啊