oracle pipelined返回值函数 针对数据汇总统计 返回结果集方法
/*打开日志输出*/ Set serveroutput on ; /*创建类型*/ create or replace type type_flux_data_stat_o as object ( ifinoctetsbps number , ifoutoctetsbps number , collecttime number ); /*创建类型归属为表类型*/ create or replace type type_flux_data_stat as table of type_flux_data_stat_o; /*pipelined创建函数 返回表类型*/ create or replace FUNCTION f_linkgroupstat(begin_time IN NUMBER, end_time IN NUMBER, lg_id in varchar2, table_name varchar2 ) return type_flux_data_stat pipelined as /*游标申明*/ v_Cur SYS_REFCURSOR ; /*sql临时变量*/ v_SQLStatement string (10000 ); /*表类型*/ v_Table type_flux_data_stat_o; /*流入字节数临时变量*/ tmp_ifinoctetsbps NUMBER ; /*流出字节数临时变量*/ tmp_ifoutoctetsbps NUMBER ; /*流入字节数汇总*/ total_ifinoctetsbps NUMBER ; /*流出字节数汇总*/ total_ifoutoctetsbps NUMBER ; /*起始时间窗格*/ tmp_begin_time NUMBER ; /*结束时间窗格*/ tmp_end_time NUMBER ; begin /*时间窗格偏移量为5分钟(300秒)*/ tmp_begin_time := begin_time; tmp_end_time := begin_time + 300 ; total_ifinoctetsbps := 0 ; total_ifoutoctetsbps := 0 ; loop exit when tmp_begin_time > end_time; v_SQLStatement := 'select sum(ifinoctetsbps) ifinoctetsbps,sum(ifoutoctetsbps) ifoutoctetsbps from ' || table_name || ' a where exists (select 1 from tm_linkgroup_cportdirection b where a.getway = b.getway and a.port_info=b.ifindex_info and lg_id in (' || lg_id || ') and a.device_id = b.device_id ) and a.collecttime >=' || tmp_begin_time || ' and a.collecttime <=' || tmp_end_time || ' order by collecttime' ; Dbms_Output.put_line(v_SQLStatement); /*针对字符串sql打开游标*/ open v_Cur for v_SQLStatement; tmp_begin_time := tmp_begin_time + 300 ; tmp_end_time := tmp_end_time + 300 ; total_ifinoctetsbps := 0 ; total_ifoutoctetsbps := 0 ; loop /*将游标的值放入零食变量中*/ fetch v_Cur into tmp_ifinoctetsbps, tmp_ifoutoctetsbps; /*当游标中不存在值时跳出游标*/ EXIT WHEN v_Cur% NOTFOUND; total_ifinoctetsbps := total_ifinoctetsbps + tmp_ifinoctetsbps;
total_ifoutoctetsbps := total_ifoutoctetsbps + tmp_ifoutoctetsbps; end loop ; /*单行记录初始化*/ v_Table := type_flux_data_stat_o(total_ifinoctetsbps, total_ifoutoctetsbps, tmp_begin_time); /*将记录压入至结果集中*/ pipe row (v_Table); /*关闭游标*/ close v_Cur; end loop ; Exception when others then Dbms_Output.put_line( Sqlerrm ); end f_linkgroupstat;
select * from table(f_linkgroupstat(1361980800,1362067200,'34','FLUX_DATA_2013_2_28')) a; 289 rows selected. Elapsed: 00:00:00.28
执行时间为:28ms
oracle pipelined返回值函数 针对数据汇总统计 返回结果集方法的更多相关文章
- c语言进阶4-有返回值函数
一. 从函数返回 从函数返回就是返回语句的第一个主要用途.在程序中,有两种方法可以终止函数的执行,并返回到调用函数的位置.第一种方法是在函数体中,从第一句一直执行到最后一句,当所有语句 ...
- c++中带返回值函数没写return能通过编译但运行时会出现奇怪问题
c++中带返回值函数没写return能通过编译但运行时会出现奇怪问题 例如: string myFunc(){ theLogics(); } 发现调用: myFunc(); 崩溃. 但调用: cout ...
- go语言基础之有参有返回值函数的使用
1.有参有返回值函数的使用 示例1: package main //必须 import "fmt" //go官方推荐写法 func MaxAndMin(a, b int) (max ...
- Python函数01/函数的初识/函数的定义/函数调用/函数的返回值/函数的参数
Python函数01/函数的初识/函数的定义/函数调用/函数的返回值/函数的参数 内容大纲 1.函数的初识 2.函数的定义 3.函数的调用 4.函数的返回值 5.函数的参数 1.函数初识 # def ...
- c语言main函数返回值、参数详解(返回值是必须的,0表示正常退出)
C语言Main函数返回值 main函数的返回值,用于说明程序的退出状态.如果返回0,则代表程序正常退出:返回其它数字的含义则由系统决定.通常,返回非零代表程序异常退出. 很多人甚至市面上的一些书籍,都 ...
- SpringMVC入门(二)—— 参数的传递、Controller方法返回值、json数据交互、异常处理、图片上传、拦截器
一.参数的传递 1.简单的参数传递 /* @RequestParam用法:入参名字与方法名参数名不一致时使用{ * value:传入的参数名,required:是否必填,defaultValue:默认 ...
- C++获取Lua全局变量和执行Lua多参数多返回值函数
C++代码: // LuaAndC.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> #i ...
- SpringMVC(二)返回值设置、数据在域中的保存与SpringMVC案例
个人博客网:https://wushaopei.github.io/ (你想要这里多有) 一.返回值的设置 1.返回 String [1]返回 String 默认情况 @RequestMappi ...
- ASP.Net MVC 在ajax接收controller返回值为Json数据
首先,再次回忆一下ajax的标准用法:(这张图写的比较详细了)(转) 页面部分ajax代码: $.ajax({ url: "/Home/Login?account=&q ...
随机推荐
- NOI 2013 书法家
http://uoj.ac/problem/125 我真是日狗了...... 果然还是没有耐心读题,搞到读题读错了2个地方,结果调试了半天...... 言归正传. 动态规划. 这种题目很常见. 我们发 ...
- 5狐网教你从零基础做Firefox os 手机应用开发赚money
如果你还没有接触过web编程,这里有基础教程教你怎样一步一步学习开发,如果你已经是一个web编程基础的人,那你就很容易将web编程放到手机上,轻松教你移植web应用游戏到Firefox手机应用再发布到 ...
- Zedboard甲诊opencv图像处理(三)
整个工程进展到这一步也算是不容易吧,但技术含量也不怎么高,中间乱起八糟的错误太烦人了,不管怎么样,现在面临了最大的困难吧,图像处理算法.算法确实不好弄啊,虽然以前整过,但都不是针对图像的. 现在的图像 ...
- [RxJS] Wrap up
Last thing to do is clean the score box and input, also auto foucs on input when click start. const ...
- Hacker(24)----防范密码被轻易破解
无论什么类型密码,用户在设置时都有非常小心,防止自己设置的密码被他人轻易破解.为保护重要的文件和资料,可采用加密工具进行加密,即可选择Win7系统自带的BitLocker,也可使用Internet中很 ...
- compass模块
Compass核心模块Reset :重置CSS模块 @import "compass/reset" Layout :页面布局的控制能力 @import "compass/ ...
- 技术路线 vs 技术管理路线
最近因为要给刚毕业的学生做一次演讲,所以就职业发展这类话题先以写博客的形式做一些思考,希望届时能给同学们带来质量更高的内容.我在<驾驭你的"职场布朗运动">一文中谈了2 ...
- 视图View
视图UI层的HTML,JavaScript,Css等元素 asp.net mvc 框架支持惯例优先配置原则 视图路径:view/controller名/Action \view\home\index. ...
- REST 相关
REST 相关 REST:Representational State Transfer,表现层状态转化(出现在阮一峰的博客 理解RESTful架构 中,但是,很明显,Representational ...
- .NET中应用Ueditor(富文本编辑)的配置和使用
一.Ueditor的下载 1.百度编辑器下载地址:http://ueditor.baidu.com/website/download.html 2.下载完整源码包,解压到任意目录,解压后的源码目录结构 ...