Oracle 存储过程 游标及计算天数的函数
create or replace package PKG_GENERAL is
TYPE ROW_CURSOR IS REF CURSOR;
–返回指定日期的月份中有多少天
function daysInMonth(rq date) return number;
–返回指定日期离月底还有多少天
function daysLeft(rq date) return number;
–返回指定日期离年底还有多少天
function daysLeftOfYear(rq date) return number;
–返回指定日期当年有多少天
function daysOfYear(rq date) return number;
end PKG_GENERAL;
create or replace package body PKG_GENERAL is
–select extract(day from sysdate) year from dual 返回日期中指定的年月日 如:年2006 月7 日30
function daysInMonth
(rq in date)
return number
as
daysOfMonth number(2);
begin
select (last_day(trunc(rq))-trunc(rq,‘Month’)+1) into daysOfMonth from dual;
return daysOfMonth;
end daysInMonth;
–返回指定日期离月底还有多少天
function daysLeft
(rq in date)
return number
as
dl number(2);
begin
select last_day(trunc(rq))-trunc(rq) into dl from dual;
return dl;
end daysLeft;
–返回指定日期离年底还有多少天
function daysLeftOfYear
(rq date)
return number
as
dys number(3);
tempDate date :=add_months(rq,1);
begin
dys:=daysLeft(rq);
while to_char(tempDate,‘yyyy’)=to_char(rq,‘yyyy’) loop
dys:=dys+daysInMonth(tempDate);
tempDate:=add_months(tempDate,1);
end loop;
return dys;
end daysLeftOfYear;
–返回指定日期当年的天数
function daysOfYear(rq date)
return number
as
dys number(3);
tempDate date :=add_months(trunc(rq,‘yyyy’),1);
begin
dys:=daysLeft(trunc(rq,‘yyyy’));
while to_char(tempDate,‘yyyy’)=to_char(rq,‘yyyy’) loop
dys:=dys+daysInMonth(tempDate);
tempDate:=add_months(tempDate,1);
end loop;
return dys+1;
end daysOfYear;
end PKG_GENERAL;
本文地址:https://blog.csdn.net/xyx_0300/article/details/107673077
上一篇: 23种设计模式之建造者模式
推荐阅读
-
Oracle中 关于数据库存储过程和存储函数的使用
-
Sql存储过程游标循环的用法及sql如何使用cursor写一个简单的循环
-
MYSQL存储过程和函数的区别及操作分析
-
Oracle编程:idea调用Oracle数据库环境搭建、java调用存储函数及存储过程
-
Oracle入门--PL/SQL、游标、存储过程、自定义函数、触发器、MyBatis 操作(6)
-
[Oracle之plsql] plsql初步学习、了解游标、存储过程、函数、触发器等概念
-
Oracle中 关于数据库存储过程和存储函数的使用
-
Oracle中 关于数据库存储过程和存储函数的使用
-
oracle数据库的游标Cursor和存储过程 PL/SQL
-
Oracle中命名块之存储过程的详解及使用方法