我建立了一个临时表,我想往里面插数据并在最后通过游标返回其结果集,但是当我向中插入值的时候。提示无法找到表名,请问我怎么做才能实现?(代码如下)
create or replace procedure sp_Totaluploadcount(c_currtn in out ego.cursorType  )
as
v_username varchar2(50);
  cursor c_users is 
  select member from sys_memberofrole where rolename='照片录入人员';
begin 
  open c_users;
  if c_users%rowcount<=0 then
  return;
  end if;
  --建立临时表
  execute immediate 'CREATE GLOBAL TEMPORARY TABLE T_TEMP ( 
   username VARCHAR2(30), 
   validcount VARCHAR2(20),
   invalidcount varchar2(20),
   specialcount varchar2(20),
   discount varchar2(20)
  ) ON Commit  PRESERVE  ROWS';  fetch c_users into v_username;
  insert into T_TEMP(usernament) values (v_username);end;

解决方案 »

  1.   

    先建立好临时表:
    CREATE GLOBAL TEMPORARY TABLE T_TEMP ( 
       username VARCHAR2(30), 
       validcount VARCHAR2(20),
       invalidcount varchar2(20),
       specialcount varchar2(20),
       discount varchar2(20)
      ) ON Commit  PRESERVE  ROWS
    存储过程中不用再动态创建了
      

  2.   

    insert into T_TEMP(usernament) values (v_username);编译的时候临时表还没有存在,会报错误的你可以向wiler(@_@) 那样先建好临时表或者在存储过程里面用动态sql的方法来插入数据
      

  3.   

    v_sql varchar2(200);
    ....fetch c_users into v_username;
      v_sql:='insert into T_TEMP(usernament) values (:p1)';
    execute immediate v_sql using v_username;