大家好,有些问题想请教一下大家,之前没接触过oracle,所以很多东西不太懂。现在有个需求是求出一个表中的数据,然后将这些数据放到临时表中例:原始表A中有start_time(date类型),stop_time(date类型),city(number类型),port_type(number类型,是指宽带用户类型,如宽带用户,和wlan用户),类型等这些字段我需要求出
 每天宽带峰值同时在线用户数 
 每天WLAN峰值同时在线用户数,
 每个城市的宽带峰值同时在线用户数,
 每个城市的WLAN峰值同时在线用户数以小时为单位,所谓峰值同时在线用户数就是一天24消小时中在线人数最多的那个小时的数据就是当天同时在线人数的数据
如果但写sql算数据还好办,现在需要将算出的这些数据存储到另外一张临时表中供前台调用临时表我知道怎么定义,大概如下,需要修改create global temporary table online_count_table
(id number(10),
 wlan_all_count number(10),
 bb_all_count number(10),
 city_wlan_count number(10),
 city_bb_count number(10)
)
on Commit Preserve Rows现在问题是如何将从其他表中查出算出来的数据存到临时表中
比如宽带同时在线用户数 = select count(*) from A where start_time < to_date('2011/11/01 00:00:00','yyyy/mm/dd hh24:mi:ss') and stop > to_date('2011/11/01 00:00:00','yyyy/mm/dd hh24:mi:ss')
and port_type = 15如何将这个sql的值存到临时表中的bb_all_count 中去?应该是用存储过程吧,大概怎么个过程呢,谢谢大家。

解决方案 »

  1.   

    CREATE OR REPLACE PROCEDURE COUNT_STAT_PROC
    AS
      vn_cnt NUMBER(4) := 0;
    BEGIN
      select count(*) INTO vn_cnt from A 
       where start_time < to_date('2011/11/01 00:00:00','yyyy/mm/dd hh24:mi:ss') 
          and stop > to_date('2011/11/01 00:00:00','yyyy/mm/dd hh24:mi:ss')
          and port_type = 15;
      INSERT INTO online_count_table(...) VALUES(..vn_cnt..);
      COMMIT;
    END COUNT_STAT_PROC;
      

  2.   

    为什么我执行的时候汇报错误呢 ,临时表已经在存储过程之前创建了
    临时表SQL> desc online_count_table;
    Name            Type       Nullable Default Comments 
    --------------- ---------- -------- ------- -------- 
    ID              NUMBER(10) Y                         
    WLAN_ALL_COUNT  NUMBER(10)                           
    BB_ALL_COUNT    NUMBER(10) Y                         
    CITY_WLAN_COUNT NUMBER(10) Y                         
    CITY_BB_COUNT   NUMBER(10) Y 执行的存储过程时报错CREATE OR REPLACE PROCEDURE COUNT_STAT_PROC
    AS
      v_sql varchar2(200);
      v_wlan_online_count NUMBER(20);     
      v_bb_online_count NUMBER(20) := 0;
      vn_cnt NUMBER(4) := 0;
    BEGIN  select count(*) INTO vn_cnt from A 
       where start_time < to_date('2011/11/01 00:00:00','yyyy/mm/dd hh24:mi:ss') 
          and stop > to_date('2011/11/01 00:00:00','yyyy/mm/dd hh24:mi:ss')
          and port_type = 19;
      INSERT INTO online_count_table(WLAN_ALL_COUNT) VALUES(vn_cnt);
      COMMIT;
    END COUNT_STAT_PROC;错误信息SQL> show errors;
    Errors for PROCEDURE OMCTEST.COUNT_STAT_PROC:
     
    LINE/COL ERROR
    -------- -----------------------------------------------
    9/36     PL/SQL: ORA-00942: table or view does not exist
    9/3      PL/SQL: SQL edStatement ignor
      

  3.   

    ORA-00942: table or view does not exist看一下,表或视图不存在,你看一下,哪里有写错了!