国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數(shù)據(jù)庫 > Oracle > 正文

如何在Oracle中使用游標(biāo)來實(shí)現(xiàn)多重循環(huán)?[原創(chuàng)]

2024-08-29 13:44:43
字體:
供稿:網(wǎng)友

  
這篇文章,是最近在寫一個(gè)項(xiàng)目中所用的存儲(chǔ)過程,由于是第一次接觸Oracle,其間花費(fèi)了許多功夫,才把功能實(shí)現(xiàn)!特記錄下來,以供參考!
[color=blue]create or replace package PSH_GPrssTREAMSTAT is[/color]
[color=red]
  -- Author  : ADMINISTRATOR
  -- Created : 2004-12-8 10:56:01
  -- Purpose : GPRS流量統(tǒng)計(jì)狀態(tài)
  -- 統(tǒng)計(jì)GPRS流量
[/color]
  type
    C_Cur is ref cursor;
  function Calcu_GPRSSTREAM return number;
end PSH_GPRSSTREAMSTAT;
-----------------------------------------------------------------------------
create or replace package body PSH_GPRSSTREAMSTAT is
 function Calcu_GPRSSTREAM return number
  is
    c_ipPackHeadLen constant number := 40;   -- 定義IP包頭長(zhǎng)度
    CURSOR c_SPINFO is
      select distinct spid from sh_spinfo where isactive = '0';

    c_MDTINFO C_Cur ;
    v_MDTINFO number;
     
    v_UpTransContentLens number(20,0);    -- 存放當(dāng)前GPRS終端上傳轉(zhuǎn)發(fā)的信息內(nèi)容長(zhǎng)度  
    v_UpContentLens number(20,0);
    v_UpTotalLens number(20,0);      -- 累計(jì)GPRS終端上傳的信息內(nèi)容長(zhǎng)度
    v_DownContentLens number(20,0); 
    v_DownTotalLens number(20,0);
    newID number(20,0);
   
  begin
    -- 初始化
    select max(statid) into newID from sh_gprsstreamstat;
    if (newID is null) then
      newID := 1;
    end if;

    for v_SPINFO In c_SPINFO loop         -- 首先獲取SPID
     -- 其次遍歷出與當(dāng)前SPID對(duì)應(yīng)的所有MDT
     open c_MDTINFo for select distinct mdtid from sh_mdtinfo where (isactive = '0') and (spid = v_SPINFO.spid);
      loop
      fetch c_MDTINFO into v_MDTINFO;
        exit when c_MDTINFO%notfound;
       
        v_UpContentLens := 0;
        v_UpTransContentLens := 0;
        v_UpTotalLens := 0;
        v_DownContentLens := 0;
        v_DownTotalLens := 0;
 
     -- 下面兩個(gè)select語句是用來獲得GPRS終端上傳的信息流量
        select sum(length(content) + c_IPPackHeadLen) into v_UpContentLens from sh_gprsmdtupinfo where (MDTID = v_MDTINFO) and (spid = v_SPINFO.spid) ;
        select sum(length(content) + c_IPPackHeadLen) into v_UpTransContentLens from sh_gprsmdttransinfo where (issUCcess = '1') and (MDTID = v_MDTINFO) and (spid = v_SPINFO.spid) ;
        if (v_UpContentLens is null) then
          v_UpContentLens := 0;
        end if;       
        if (v_UpTransContentLens is null) then
          v_UpTransContentLens := 0;
        end if;       
        v_UpTotalLens := v_UpTotalLens + v_UpContentLens + v_UpTransContentLens;
       
        -- 下面的Select語句是用來獲得服務(wù)商下發(fā)的信息流量
        select sum(length(content) + c_IPPackHeadLen) into v_DownContentLens from sh_gprsspdowninfo where (MDTID = v_MDTINFO) and (spid = v_SPINFO.spid) ;
        if (v_DownContentLens is null) then
          v_DownContentLens := 0;
        end if;
        v_DownTotalLens := v_DownTotalLens + v_DownContentLens ;

        -- 將統(tǒng)計(jì)出的累計(jì)值存放到流量狀態(tài)統(tǒng)計(jì)表中       
        if (v_UpTotalLens >0) or (v_DownTotalLens > 0) then
          insert into sh_gprsstreamstat (statid,spid,mdtid,starttime,endtime,mdtupstream,spdownstream)
          values(newID,v_SPINFO.spid,v_MDTINFO,sysdate,sysdate,v_UpTotalLens,v_DownTotalLens);
          -- 自增量加1
           newID := newID + 1;                  
        end if;    
      end loop;    
      close c_MDTINFO;  
      commit;            

    end loop;
    return 1;
  end;

begin
  null;
end PSH_GPRSSTREAMSTAT;

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 南陵县| 海城市| 民丰县| 肃北| 五华县| 顺义区| 大安市| 阿拉尔市| 抚顺市| 南郑县| 民县| 吐鲁番市| 西城区| 桐庐县| 喀喇沁旗| 四会市| 北碚区| 凤山县| 长泰县| 高邮市| 阿瓦提县| 湖口县| 云南省| 义乌市| 清河县| 芜湖县| 塔河县| 灌阳县| 循化| 南和县| 临洮县| 台北县| 沈丘县| 浦城县| 德令哈市| 长兴县| 广水市| 宁城县| 修武县| 清远市| 辉南县|