jlandzpa(欧宝黎嘉陈):
可不可以具体一点!

解决方案 »

  1.   

    open P_CURSOR for
     'select * from' || t_name; 
    如果还有错吧原码和错误信息贴出来。
      

  2.   

    我试过了:但是错误代码如下:
    pls-00103:出现符号"select * from"在需要下列之一时;
              select
      

  3.   

    改成这样试试:
    create or replace procedure getfhtjbytybm
    (P_CURSOR OUT COMM_TYPES.COMM_CURSOR,
     T_NAME IN varchar2
    )
    AS
      v_cursor p_cursor;
    BEGIN
     
     open v_CURSOR for
     'select * from' || t_name; END getFhtjByTybm;
      

  4.   

    我试过了:但是错误代码任然如下:
    pls-00103:出现符号"select * from"在需要下列之一时;
              select
      

  5.   

    没有问题呀:
    SQL> create or replace package comm_types
      2  AS
      3  TYPE COMM_CURSOR IS REF CURSOR;
      4  END comm_types;
      5  /Package created.Elapsed: 00:00:01.73
    SQL> create or replace procedure getfhtjbytybm
      2  (P_CURSOR OUT COMM_TYPES.COMM_CURSOR,
      3   T_NAME IN varchar2
      4  )
      5  AS
      6
      7  BEGIN
      8
      9   open P_CURSOR for
     10   'select * from' || t_name;
     11
     12  END getFhtjByTybm;
     13  /Procedure created.Elapsed: 00:00:01.12
      

  6.   

    这样吧:
    http://www.csdn.net/expert/topic/1001/1001361.xml?temp=.3573877
      

  7.   

    我用的是8.0.5版,有问题吗?
    SQL> create or replace procedure getfhtjbytybm
      2  (P_CURSOR OUT COMM_TYPES.COMM_CURSOR,
      3  T_NAME IN varchar2
      4  )
      5   AS
      6  
      7  BEGIN
      8  
      9   open P_CURSOR for
     10  'select * from' || t_name;
     11  
     12  END getFhtjByTybm;
     13  /警告:已创建的过程出现编译错误。
      

  8.   

    又是版本的问题。8.0.5不支持ref cursor类型的游标
      

  9.   

    但是包没有抱错亚:
    SQL> create or replace package comm_types 
      2  AS
      3  TYPE COMM_CURSOR IS REF CURSOR;
      4  END comm_types;
      5  /程序包已创建。
      

  10.   

    805不支持open for 语句。也不支持本地动态sql(即execute immediate)。
    调用dbms_sql包来写动态sql吧