这里必须使用动态sql进行插入记录操作,因为原先(在过程执行之前)没有这个表,直接insert,oracle就出现了该提示。

解决方案 »

  1.   

    v_cursor:=dbms_sql.open_cursor;
      if dbms_sql.is_open(cursor_num) then
        dbms_sql.parse(cursor_num,"insert into  path(lujingbianhao,renwudaima,bianhao) values(1,11,1);",dbms_sql.native);
        v_rownum := dbms_sql.execute(cursor_num);
      end if;
      

  2.   

    我建议不要使用临时表,建一张固定的table,它的结构和你要得临时表一样的基础上多增加一个colum cid用以区分不同用户的数据。使用完毕以后根据cid删掉数据,和临时表功能一样,但效率很高。
      

  3.   

    create or replace procedure mytest(
                      projectid in varchar)
    v_sql1 varchar2(100);
    v_sql2 varchar2(100);
    is
    v_sql1:= 'CREATE GLOBAL TEMPORARY TABLE path(lujingbianhao varchar2(100),renwudaima varchar2(100),bianhao varchar2(100)) ON COMMIT PRESERVE ROWS';
    execute immediate v_sql1;
    v_sql2:='insert into  path(lujingbianhao,renwudaima,bianhao) values(''1'',''11'',''1'')';
    execute immediate v_sql2;
    end mytest;