oracle存储过程、函数库
2013-06-09 10:16
127 查看
--获取当前日期函数
2、--获取指定日期之间的连续日期数据集
采用游标方式返回数据集的读取方法
通过在oracle包中定义一个返回连续日期的数据集函数。实现原理如下:
从oracle 9i 开始,提供了一个叫做“管道化表函数”的概念,来解决这个问题。这种类型的函数,必须返回一个集合类型,且标明 pipelined。这个oracle函数不能返回具体变量,必须以一个空 return 返回。这个oracle函数中,通过 pipe row () 语句来送出要返回的表中的每一行。调用这个oracle函数的时候,通过 table() 关键字把管道流仿真为一个数据集。
第一步:创建表类型
第二部:在包中定义函数
第三部:在包体中定义函数实体
第四部:调用方法
oracle声明数据包格式
Function Fn_GetCurrentDate Return Varchar2 Is v_CurrentDate VARCHAR2(19); Begin Select to_char(sysDate,'yyyy-MM-dd') Into v_CurrentDate From dual; Return V_CurrentDate; End Fn_GetCurrentDate;
2、--获取指定日期之间的连续日期数据集
Function Fn_GetDateList(v_startDate varchar2, v_endDate varchar2) Return recordType Is v_dateRecord recordType; Begin Open v_dateRecord For Select TO_DATE(v_startDate, 'YYYY-MM-DD') + NUMTODSINTERVAL(level, 'day') thisDate From dual Connect By Level <= To_Date(v_endDate,'yyyy-mm-dd') - To_Date(v_startDate, 'yyyy-mm-dd'); Return v_dateRecord; End Fn_GetDateList;
采用游标方式返回数据集的读取方法
Declare dateRecord Pkg_Stm_Date.recordType; --定义ref cursor型变量 dateValue Varcahr2(20); Begin --调用函数,获得记录集 dateRecord := Pkg_Stm_Date.Fn_GetDateList('2013-03-01','2013-06-01'); --fetch结果并显示 Fetch dateRecord Into dateValue; while dateRecord % Found loop dbms_output.put_line(dateValue); fetch dateRecord into dateValue; End Loop; End;
通过在oracle包中定义一个返回连续日期的数据集函数。实现原理如下:
从oracle 9i 开始,提供了一个叫做“管道化表函数”的概念,来解决这个问题。这种类型的函数,必须返回一个集合类型,且标明 pipelined。这个oracle函数不能返回具体变量,必须以一个空 return 返回。这个oracle函数中,通过 pipe row () 语句来送出要返回的表中的每一行。调用这个oracle函数的时候,通过 table() 关键字把管道流仿真为一个数据集。
第一步:创建表类型
create or replace type DateRecord as table of varchar2(8000)
第二部:在包中定义函数
--获取连续的日期列表,返回结果集 Function Fn_GetDateTable(P_StartDate varchar2, P_EndDate varchar2) return DateRecord pipelined;
第三部:在包体中定义函数实体
--返回日期列表,以表数据方式显示可以进行表关联 Function Fn_GetDateTable(P_StartDate Varchar2, P_EndDate Varchar2) RETURN DateRecord pipelined Is Begin for dateRow in ( select TO_DATE(P_StartDate, 'yyyy-mm-dd') + NUMTODSINTERVAL(level, 'day') thisDate from dual Connect By Level <= To_Date(P_EndDate,'yyyy-mm-dd') - To_Date(P_StartDate, 'yyyy-mm-dd') ) loop PIPE ROW(dateRow.thisDate); end loop; return; End Fn_GetDateTable;
第四部:调用方法
select column_value from table(Pkg_Stm_Date.Fn_GetDateTable('2013-03-01','2013-06-01'));
oracle声明数据包格式
create or replace package PKG_TCH_COURSE_Init is -- Author : ADMINISTRATOR -- Created : 2013-6-17 16:50:19 -- Purpose : 定义数据包功能描述 /*声明存储过程*/ PROCEDURE SP_TCH_CourseTable_Init( schoolId IN NUMBER DEFAULT 0, gradeId IN NUMBER DEFAULT 0, classId IN NUMBER DEFAULT 0 , queryDate IN VARCHAR DEFAULT '', courseType IN NUMBER DEFAULT 0 ); end PKG_TCH_COURSE_Init;
相关文章推荐
- C#调用ORACLE存储过程返回结果集及函数
- PL/Sql Dev调试Oracle存储过程、触发器、函数
- oracle存储过程 语法 函数 总结
- oracle存储过程及函数中返回结果集(游标)
- Oracle存储过程和函数使用方法
- ORACLE存储过程调用自定义函数
- JAVA调用Oracle存储过程和函数
- Oracle存储过程之merge into 函数(二)
- C#调用ORACLE存储过程返回结果集及函数
- oracle存储过程与函数(一)
- Oracle存储过程,存储函数的学习
- C#调用ORACLE存储过程返回结果集及函数
- Oracle存储过程及函数的练习题
- oracle存储过程和函数例子
- C#调用ORACLE存储过程返回结果集及函数
- oracle存储过程、匿名块、函数、包
- .net 执行oracle存储过程时 找不到存储过程名,总是找函数的原因
- C#调用ORACLE存储过程返回结果集及函数
- PL/SQL语句块基本语法(ORACLE存储过程,函数,包,游标) (转)
- oracle存储过程及自定义函数(存储函数)初学