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_statpipelined 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 ;loopexit 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_Curinto 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 ;Exceptionwhen others thenDbms_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
转载于:https://www.cnblogs.com/sesexxoo/p/6190596.html
oracle pipelined返回值函数 针对数据汇总统计 返回结果集方法相关推荐
- 119.编写函数,该函数的功能是计算下列级数之和,和值返回调用函数,数据由主函数输入
计算下列级数之和 题目:编写函数,该函数的功能是计算下列级数之和,和值返回调用函数,数据由主函数输入 效果 讲解 代码 题目:编写函数,该函数的功能是计算下列级数之和,和值返回调用函数,数据由主函数输 ...
- SpringMVC入门(二)—— 参数的传递、Controller方法返回值、json数据交互、异常处理、图片上传、拦截器
SpringMVC入门(二)-- 参数的传递.Controller方法返回值.json数据交互.异常处理.图片上传.拦截器 参考文章: (1)SpringMVC入门(二)-- 参数的传递.Contro ...
- Python函数01/函数的初识/函数的定义/函数调用/函数的返回值/函数的参数
Python函数01/函数的初识/函数的定义/函数调用/函数的返回值/函数的参数 内容大纲 1.函数的初识 2.函数的定义 3.函数的调用 4.函数的返回值 5.函数的参数 1.函数初识 # def ...
- 【C 语言】字符串模型 ( 字符串翻转模型 | 抽象成业务函数 | 形参返回值 | 函数返回值 | 函数形参处理 | 形参指针判空 )
文章目录 一.字符串翻转模型 业务函数 二.完整代码示例 一.字符串翻转模型 业务函数 将上一篇博客 [C 语言]字符串模型 ( 字符串翻转模型 ) 的代码 , 主要业务逻辑 , 抽象成函数 ; 字符 ...
- 【C 语言】字符串模型 ( 两头堵模型 | 将 两头堵模型 抽象成业务模块函数 | 形参返回值 | 函数返回值 | 形参指针判空 | 形参返回值操作 )
文章目录 一.将 两头堵模型 抽象成业务模块函数 二.完整代码示例 一.将 两头堵模型 抽象成业务模块函数 将 两头堵模型 抽象成业务模块函数 相关要点 : 形参返回值 : 函数的返回值 , 一般使用 ...
- 返回值类型与函数类型不匹配_C++返回值类型后置(跟踪返回值类型)
在泛型编程中,可能需要通过参数的运算来得到返回值的类型.考虑下面这个场景: template <typename R, typename T, typename U>R add(T t, ...
- c++中带返回值函数没写return能通过编译但运行时会出现奇怪问题
c++中带返回值函数没写return能通过编译但运行时会出现奇怪问题 例如: string myFunc(){ theLogics(); } 发现调用: myFunc(); 崩溃. 但调用: cout ...
- keil5函数 默认返回值_python实用技巧——获取部分返回值的4种方式
喜欢编程,热爱分享,希望能结交更多志同道合的朋友,一起在学习Python的道路上走得更远! python的函数支持返回多个值.返回多个值时,默认以tuple的方式返回. 例如,下面两个函数的定义是完全 ...
- MATLAB中如何忽略函数中前几个不需要的返回值而只取需要的返回值,例如:只取函数第二个返回值,而忽略第一个返回值
1 致谢 感谢网友honglei.chen的回答, 原文链接如下: https://www.ilovematlab.cn/thread-203269-1-1.html 2 前言 今天在学习神经网络算法 ...
最新文章
- ajax 阻止默认提交,jQuery验证插件:在对ajax调用servlet时,submitHandler不会阻止默认提交-返回false无效...
- 深入跨域问题(2) - 利用 CORS 解决跨域
- 使用纯 Win32 API 编程实现Winpcap 封包捕获的第一个例子
- 浪潮服务器更换硬盘_总金额2.5亿!浪潮信息助力中国移动部署NFV项目
- F#基础教程 列表
- C#调用VB进行简繁转换
- JavaScript-作用域和作用域链
- docker核心视频教程
- winform直接控制云台_售价899元,大疆手机云台DJI OM 4发布,磁吸式卡位 15小时续航...
- Eclipse配置GitHub代码库(以Windows7为例)
- 华三路由交换配置命令_华三华为交换机路由器配置常用命令
- Image caption领域的研究现状及分析
- 外交部官员回应中国免签国都是穷乱国:需要时间
- centos 6.8 请教笔记本上的虚拟机如何配置无线网络 桥接联网
- 键盘哪个键是锁定计算机,键盘锁是哪个键 锁键盘的是哪个键 - 云骑士一键重装系统...
- mysql级联更新_Mysql实现级联操作(级联更新、级联删除)(转)
- 灵活使用手机之-手机服务器和客户端
- 原始混合合成器:Arturia Analog Lab for Mac
- SWUST OJ#1052 输出利用先序遍历创建的二叉树中的指定结点的双亲结点
- vmware workstation虚拟机连接外网(Nat模式)
热门文章
- 5G NR QCL准共址详解
- 批量绑定(bulk binds):FOR循环与FORALL的性能比较
- SSHF备忘之依赖包(struts2+spring2.5+hibernate+freemarker)
- Hibernate依赖包简单介绍
- 【bzoj4372】烁烁的游戏 动态点分治+线段树
- python pep8
- 信息安全系统设计基础第八周学习总结
- JavaScript 本地验证用户注册信息
- 中国建设银行(2011.11.19南京大学)
- Docker与CI持续集成/CD(转)