Oracle存储过程的使用实例

数据库 Oracle
Oracle数据库中的存储过程我们经常会用到,下文以实例的形式为您介绍Oracle存储过程的使用方法,如果您感兴趣的话,不妨一看。

Oracle存储过程对于Oracle数据库中的重要性毋庸置疑,下面就为您介绍一个Oracle存储过程的使用实例,希望对您学习Oracle存储过程有更多的了解。

最近在写一个项目中所用的Oracle存储过程,由于是***次接触oracle,其间花费了许多功夫,才把功能实现!特记录下来,以供参考.

create or replace package PSH_GPRSSTREAMSTAT is

-- Author : ADMINISTRATOR

-- Created : 2004-12-8 10:56:01

-- Purpose : GPRS流量统计状态

-- 统计GPRS流量

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包头长度
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); -- 存放当前GPRS终端上传转发的信息内容长度
v_UpContentLens number(20,0);
v_UpTotalLens number(20,0); -- 累计GPRS终端上传的信息内容长度
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
-- 其次遍历出与当前SPID对应的所有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;

-- 下面两个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语句是用来获得服务商下发的信息流量

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 ;

-- 将统计出的累计值存放到流量状态统计表中

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;

 

 

 

【编辑推荐】

JAVA创建Oracle存储过程的实现

Oracle存储过程的调试方法

使用oracle存储过程分页的实例

ORACLE增加表空间的实现

Oracle创建视图的语法

责任编辑:段燃 来源: 互联网
相关推荐

2010-10-26 14:50:11

oracle存储过程

2009-03-25 10:48:08

存储银行Oracle

2011-04-13 09:45:15

Oracle存储

2010-09-14 10:16:57

sql server

2010-11-12 12:01:08

Oracle存储过程

2009-05-13 10:29:01

存储过程OracleJava

2010-11-19 09:48:48

ORACLE创建实例

2011-07-08 16:07:41

Oracle job存储过程

2010-04-07 13:12:25

Oracle存储过程

2010-04-16 10:11:20

Oracle存储过程

2010-03-30 12:50:42

Oracle存储

2010-10-28 10:10:48

oracle存图片

2010-08-25 09:56:02

DB2存储过程

2011-08-25 11:36:50

PreparedStaJDBC存储过程调用

2010-10-29 16:06:55

Oracle存储过程

2010-04-15 17:31:10

Oracle存储过程

2018-08-28 11:40:47

存储过程语法

2010-04-08 16:41:29

Oracle存储过程

2018-10-12 11:26:13

oracle存储语法

2010-04-07 12:08:28

Oracle存储过程
点赞
收藏

51CTO技术栈公众号