本帖最后由 junon 于 2010-10-07 16:17:33 编辑

解决方案 »

  1.   

    你过程中insert数据commit没有啊?如果没有提交,其他session是查询不到存储过程未提交的数据。
      

  2.   

    那个应该没什么关系吧。
    我在PL/SQL里面先选中执行begin
      -- Call the procedure;
       P(1);  
    end;再选中执行
     
       select  * from T
    是不会报错的,也能查询出正确的数据
      

  3.   

    variable rs refcursor
    declare
      r_out sys_refcursor;
    begin
      p(1);
      open r_out for select * from t;
      :rs := r_out;
    end;
    print rs
      

  4.   

    存储过程中的select语句要写成 select ... into ...
      

  5.   


    是啊,因为你是在同一个session中,过程P执行完了,同一个会话中执行select  * from T 当然能查询出insert的数据。那我想请问楼主,到底你想要什么啊?视乎不太懂你的需求了。
      

  6.   

    回复6:就想把P(1)执行后把临时表T中的数据查询出来
    回复3、5:执行报错ora-00900 invalid Sql statement
    回复4:已经把查询的数据Insert到临时表A了
      

  7.   

    不是很理解的再回答一次,两种方式:
    1、过程P中对insert T 数据之后,执行commit提交。这样其他session就可以select * from T查看insert的数据了
    2、用你2楼的方式,在PLSQL中执行begin
      -- Call the procedure;
       P(1);  
    end;
    /
    select  * from T;
      

  8.   

    回复9楼:在PL/SQL里面能够正常执行。不知道怎样放在程序里面去。如果实在不行,我只好改写程序了
      

  9.   

    回复9楼:在PL/SQL里面能够正常执行。不知道怎样放在程序里面去。如果实在不行,我只好改写程序了
      

  10.   

    回复9楼:在PL/SQL里面能够正常执行。不知道怎样放在程序里面去。如果实在不行,我只好改写程序了
      

  11.   

    --你的写法本来就有问题 语法的问题
    begin
      -- Call the procedure;
       P(1);  
       execute immediate 'select  * from T';
    end;