在一个存储过程中我需要动态创建一个临时的表,然后在这个表中插入一些数据。而后要把这个临时表中的数据提取出来,我想问的是:在提取这个动态创建的临时表中的数据时,是否必须用到游标变量呢?或是有其它的方法解决。我不清楚,请提示!

解决方案 »

  1.   

    你是用TYPE ... IS TABLE OF ...
    还是用 EXECUTE IMMEDIATE 'CREAT TABLE ....'呢?
      

  2.   

    表是在程序中动态创建的,用的是EXECUTE IMMEDIATE 'CREAT TABLE 。
      

  3.   

    用EXECUTE IMMEDIATE 'CREAT TABLE 。 的话,这张表应该已经确实建立起来了,并且execute执行完毕之后,才会接着进行其他的操作。
    个人感觉只要你建立起这个表,可以不算临时表了吧?即使你只是临时使用它回来立刻drop。
    只要按照楼主说的情况,表建立起来了,那么就可以直接从里面取值。你 'CREAT TABLE   后面的表名如果不是动态的,例如你写'CREAT TABLE  aaa 的话,可以直接从aaa 读取。    如果是建立动态的表   'CREAT TABLE  '||table_bbb||'  的话, 那么读取动态建立表的值,觉得用动态游标比较好取得,例如    
    type type_cur is ref cursor;
    cursor_d type_cur;begin
      open cursor_d for 'select xxxxxxxxxx 
      from '||table_bbb||'t '; 
      FETCH cursor_d INTO v_xxxxx;........................................