1:首先看创建一个函数

给定一个日期,判断是否是休息日.

 create or replace function test(date_in in date)
return int
is
num int;
workflag varchar2(1);
begin
select count(*) into num from Sys_Holiday
where to_char(TODAY,'yyyy-MM-dd')=to_char(date_in,'yyyy-MM-dd'); if (num>0) then
select WORKFLAG into workflag from Sys_Holiday
where to_char(TODAY,'yyyy-MM-dd')=to_char(date_in,'yyyy-MM-dd');
if (workflag='W') then
return 0;
else
return 1;
end if;
else
select to_char(date_in,'D') into num from dual;
if (num=7 or num=1) then
return 1;
else
return 0;
end if;
end if;
end;

2:另外一个函数调用这个函数,一个日期增加或减少多少天对应的日期(工作日)

 CREATE OR REPLACE FUNCTION getWorkDayADD( datetime in date,workday in int) return date
is
dayflag int; --初始值,写循环
sumflag int; --判断值
datetime1 date;
workday1 int;
sysdateadd date;
daynum int;
sysdatelast date; --返回值
begin
datetime1 :=datetime;
workday1 := workday;
dayflag :=0;
sumflag :=1;
if(workday1>0) --加减多少来决定
then
while (sumflag=workday1) loop
dayflag := dayflag+1;
select datetime1+dayflag into sysdateadd from dual;
daynum :=test(sysdateadd);
if(daynum=1)then
sumflag :=sumflag;
else
sumflag :=sumflag+1;
end if;
end loop;
else
while (sumflag=workday1) loop
dayflag := dayflag+1;
select datetime1-dayflag into sysdateadd from dual;
daynum :=test(sysdateadd);
if(daynum=1)then
sumflag :=sumflag;
else
sumflag :=sumflag+1;
end if;
end loop; end if;
if(workday1>0) then
select datetime1+dayflag into sysdatelast from dual;
else
select datetime1-dayflag into sysdatelast from dual;
end if; return (sysdatelast);
end getWorkDayADD;

3 编写一个简单的存储过程调用以上的函数

 create or replace procedure x is
c date;
datetime date;
begin
select sysdate into datetime from dual;
dbms_output.put_line(datetime);
dbms_output.put_line('');
c := getWorkDayADD(datetime,3);
dbms_output.put_line(c);
end;

4 执行存储过程

sql>exec x;

oracle 函数写法 总结的更多相关文章

  1. 汉字转拼音的Oracle函数

    前言: 最近处理一个特殊的问题,需要用到汉字自动转换拼音的功能. 解决: 在这里找了不少资料,都是有所缺陷,而且也好像很绕.其实是一个很简单的东东.后来还是自己写了一个函数获取.分享出来,给有需要的X ...

  2. Oracle函数sys_connect_by_path 详解

    Oracle函数sys_connect_by_path 详解 语法:Oracle函数:sys_connect_by_path 主要用于树查询(层次查询) 以及 多列转行.其语法一般为:       s ...

  3. DB2、ORACLE SQL写法的主要区别

    DB2.ORACLE SQL写法的主要区别   说实话,ORACLE把国内的程序员惯坏了,代码中的SQL充斥着大量ORACLE特性,几乎没人知道ANSI的标准SQL是什么样子,导致程序脱离了ORACL ...

  4. oracle函数,游标,视图使用总结0.000000000000000000001

    oracle函数或者叫存储过程,在实际的开发过程中对于复杂的业务需求是非常有用的,非常有效率的也是非常好玩儿的一个技术点. 平常在开发过程中对于CRUD功能较多.一般SQL即可应付,大不了就是长一点而 ...

  5. 【函数】Oracle函数系列(2)--数学函数及日期函数

    [函数]Oracle函数系列(2)--数学函数及日期函数 1  BLOG文档结构图 2  前言部分 2.1  导读和注意事项 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不 ...

  6. oracle函数listagg的使用说明(分组后连接字段)

    关于oracle函数listagg的使用说明 工作中经常遇到客户提出这样的需求,希望在汇总合并中,能够把日期逐个枚举出来. 如图,原始数据是这样的: 客户希望能够实现这样的汇总合并: 那么通常我会使用 ...

  7. C/C++ 调用qsort/sort 对字符数组排序的cmp函数写法

    这个问题屡次碰到解决之后再次遇到又忘记怎么弄了,这次打算彻底搞清楚. ·C 首先对所谓字符数组的排序应该是对(char)*a[]数组而非(char)a[][]进行的排序,后者是无法直接调用qsort实 ...

  8. 浅谈Oracle函数返回Table集合

    在调用Oracle函数时为了让PL/SQL 函数返回数据的多个行,必须通过返回一个 REF CURSOR 或一个数据集合来完成.REF CURSOR 的这种情况局限于可以从查询中选择的数据,而整个集合 ...

  9. IIFE-js中(function(){…})()立即执行函数写法理解

    介绍IIFE IIFE的性能 使用IIFE的好处 IIFE最佳实践 jQuery优化 在Bootstrap源码(具体请看<Bootstrap源码解析>)和其他jQuery插件经常看到如下的 ...

随机推荐

  1. No identities are available for signing的解决方法

    今天将做好的app提交到app store,结果就出现标题上的错误.“No identities are available for signing”.这个错误对于一个iOS开发者来说已经很平常了,这 ...

  2. Netsuite > Foreign Currency Revaluation 外币评估

    MENU: Transactions > Financial > Revalue Open Currency Balances 使用频率: - 每个月月底,结账前, 手工操作. - 或者在 ...

  3. linux screen 命令详解

    一.背景 系统管理员经常需要SSH 或者telent 远程登录到Linux 服务器,经常运行一些需要很长时间才能完成的任务,比如系统备份.ftp 传输等等.通常情况下我们都是为每一个这样的任务开一个远 ...

  4. dev LayoutControl布局控件

    标题长短不一致,很难看 设置LayoutControl属性 效果: 修改字体: 控件字体: LayoutControl→Appearance→Control→Font→FontSize  (Contr ...

  5. "rel=nofollow"属性

    nofollow是HTML元标签(meta)的content属性和链接标签(a)的rel属性的一个值,告诉机器(爬虫)无需追踪目标页,为了对抗blogspam(博客垃圾留言信息),Google推荐使用 ...

  6. Linux下查看/管理当前登录用户及用户操作历史记录

    转载自: http://www.cnblogs.com/gaojun/archive/2013/10/24/3385885.html 一.查看及管理当前登录用户 1.使用w命令查看登录用户正在使用的进 ...

  7. python 生成器生成杨辉三角

    用Python写趣味程序感觉屌屌的,停不下来 #生成器生成展示杨辉三角 #原理是在一个2维数组里展示杨辉三角,空的地方用0,输出时,转化为' ' def yang(line): n,leng=0,2* ...

  8. [转] HashMap的存取之美

    本文转自 http://www.nowamagic.net/librarys/veda/detail/1202 HashMap是一种十分常用的数据结构,作为一个应用开发人员,对其原理.实现的加深理解有 ...

  9. ListView下拉加载二(分页)

    这次在一的基础上做了数据通过HttpClient远程获取显示 并且分页,首先看下效果吧: 以上就是效果图了 下面看下具体代码实现吧 主要代码和上节差不多 主入口代码: package com.tp.s ...

  10. arm-linux-androideabi-addr2line

    ./arm-linux-androideabi-addr2line -C -f -e libc.so 00040d94