CREATE OR REPLACE  PACKAGE BODY "WYUSER"."F_MODEL" as
 function MModelbrow(id1 in number)
   return m_cursor IS 
       ACursor m_cursor; 
       l1 number;
       strCreateTable   varchar2(600);     
    BEGIN 
    l1:=0;
    strCreateTable:='CREATE GLOBAL TEMPORARY TABLE re (ID2 number,level2 number) ON COMMIT PRESERVE ROWS';   
    Execute immediate strCreateTable
    INSERT INTO  RE (id2,level2) values(id1,l1);     
    COMMIT; 
    open ACursor for select id2,level2 from re;
     return ACursor;
    end MModelbrow;  
end;
PLS-00103:   出现符号   "insert"在需要下列之一时:  
出现这样的错误.这个是怎么回事?

解决方案 »

  1.   

    INSERT INTO  RE (id2,level2) values(id1,l1); 报错感觉不应该呀。。
      

  2.   

     Execute immediate strCreateTable 后面没加分号
      

  3.   

    CREATE OR REPLACE  PACKAGE BODY "WYUSER"."F_MODEL" as
     function MModelbrow(id1 in number)
       return m_cursor IS 
           ACursor m_cursor; 
           l1 number;
           strCreateTable   varchar2(600);     
        BEGIN 
        l1:=0;
        strCreateTable:='CREATE GLOBAL TEMPORARY TABLE re (ID2 number,level2 number) ON COMMIT PRESERVE ROWS';   
        Execute immediate strCreateTable;
        INSERT INTO  RE (id2,level2) values(id1,l1);     
        COMMIT; 
        open ACursor for select id2,level2 from re;
         return ACursor; 
        end MModelbrow;  
    end;
    提示表或视图不存在。
    INSERT INTO  RE (id2,level2) values(id1,l1);  
    open ACursor for select id2,level2 from re;这两句应该怎么写
      

  4.   

    你把所有代码贴出来。如果光就这些代码肯定不行的,Acursor是游标吧,还没给m_cursor定义呢
      

  5.   

    包没有问题
     CREATE OR REPLACE  PACKAGE "WYUSER"."F_MODEL" as
     type m_cursor is ref cursor; 
     function MModelbrow(
        id1 in number
       ) return  m_cursor;
    end;
    包体提示ora-00942 表或视图不存在
    CREATE OR REPLACE  PACKAGE BODY "WYUSER"."F_MODEL" as
     function MModelbrow(id1 in number)
       return m_cursor IS 
           ACursor m_cursor; 
           l1 number;
           strCreateTable   varchar2(600);     
        BEGIN 
        l1:=0;
        strCreateTable:='CREATE GLOBAL TEMPORARY TABLE 
        re (ID2 number,level2 number) ON COMMIT PRESERVE ROWS';   
        Execute immediate strCreateTable;
        INSERT INTO  RE values(id1,l1);     
        COMMIT; 
        open ACursor for select * from re;
         return ACursor; 
        end MModelbrow; 
    end;
      

  6.   

    insert语句不正确 应该这样写:
    Execute immediate 'INSERT INTO  RE values(id1,l1)';
      

  7.   

    老兄,你在INSRT INTO RE时
    些时表RE并没有啊,怎么可以呢
      

  8.   

    Execute immediate 'INSERT INTO  RE values(id1,l1)';是可以。
    但是
    open ACursor for select * from re; 
    不行。用Execute immediate 'select * from re';肯定不行
      

  9.   

    Execute immediate 'INSERT INTO  GLOBAL TEMPORARY RE values('||id1||','||l1||')';
    这回应该可以了 
      

  10.   

    老兄那样是可以了但是open ACursor for select * from re; 不行。
    用open ACursor for Execute immediate 'select * from re';肯定不行