CREATE OR REPLACE procedure APPS.wst_hr_province(p_date in varchar2)
    is
   begin
declare
  str varchar2(1000);
  str2 varchar2(1000);
  flag number ;
  v_province FND_FLEX_VALUES_VL.DESCRIPTION%type;
  v_count  number;
  p_date_start varchar2(10):=p_date;
cursor  v_cursor is
       select description ,count(*)
       from wshr_emp_personal a,wshr_emp_general d,wshr_emp_header 
b,FND_FLEX_VALUES_VL c
      where a.header_id =b.header_id
        and c.FLEX_VALUE=a.PROVINCE
        and a.emp_id=d.emp_id
        and c.FLEX_VALUE_SET_ID='1017038'
        and (
            d.leave_date is null or 
d.leave_date>to_date(p_date_start||'1231','yyyymmdd')
            )
        and d.join_date<=to_date(p_date_start||'1231','yyyymmdd')
   group by description;  begin
    select count(*) INTO FLAG from user_tables where table_name ='TEMP_WHP';
    IF(FLAG=0) THEN
   str:= 'CREATE   GLOBAL   TEMPORARY   TABLE   TEMP_WHP(
                        province  VARCHAR2(20),
                        count_person number
                      ) ON   COMMIT   PRESERVE ROWS ';
      execute immediate str;
     END IF ;
    open v_cursor;
      loop
         fetch v_cursor  into v_province,v_count;
        execute immediate 'insert into TEMP_WHP 
     VALUES(''||v_province||'',''|| v_count||'')';           exit when  v_cursor%notfound ;
        -- commit;
      end loop;
      close v_cursor;
  end ;
  END ;
以上这段代码 编译能通过 ,调用也不会报错 ,但是我查看数据的时候表还是空的 (也是在同一个session下) ,sql 语句是有数据返回的
但是没有insert 到我的临时表里面 ,不知道是什么原因 请大家帮帮忙啊  
,谢谢各位啦 !