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('1231');
c := getWorkDayADD(datetime,3);
dbms_output.put_line(c);
end;
4: 执行这个存储过程
SQL> exec x
分享到:
相关推荐
在这个“Oracle函数_JDBC常用写法”的主题中,我们将探讨Oracle的一些关键函数和JDBC的常见使用方法。 首先,让我们来看看`ORACLE函数大全.txt`中可能涵盖的内容。Oracle函数包括数学函数、字符串函数、日期时间...
9. 函数和内置操作:例如,SQL Server的 `CONVERT()` 函数在Oracle中可能是 `TO_CHAR()` 或 `TO_DATE()`。 10. 日期格式:SQL Server和Oracle默认的日期格式不同,转换时需要考虑日期字符串的格式化问题。 在...
以上就是从给定文件中提取出来的Oracle存储过程学习的经典知识点,涵盖了基本语法、常见问题、调用方法以及与函数的区别等内容。希望这些内容能帮助读者更好地理解和掌握Oracle存储过程的相关知识。
在Oracle数据库中将数字金额转换为中文写法,运行后直接调用函数即可
在Oracle中,释放游标可以通过预编译参数来控制,无需显式调用释放语句。 - Oracle的DML(数据操纵语言)和DDL(数据定义语言)语法与Informix不同,部分Informix的关键字和内嵌函数在Oracle中可能不被支持。例如,...
触发器在数据库里以独立的对象存储,它与存储过程和函数不同的是,存储过程与函数需要用户显示调用才执行,而触发器是由一个事件来启动运行。即触发器是当某个事件发生时自动地隐式运行。并且,触发器不能接收参数。...
Oracle数据库在SQL优化方面有很多策略和技术,其中包括对函数的使用、索引的创建以及性能测试。在提供的聊天记录中,提到了几个关键知识点,我们将详细展开讨论。 1. **NVL与DECODE函数的性能差异**: NVL函数用于...
针对eos的业务字典表设置转换函数,将代码直接通过调用函数获取汉字说明。以上写法适用于oracle数据库,如需用于mysql需要稍作改造
当SQL语句内部调用函数,进而再调用SQL语句时,就会产生递归调用。这种做法可能会导致大量的性能开销,因此要尽量避免或减少调用次数。文档还提到了使用绑定变量,它是OLTP系统性能优化的关键因素。绑定变量能够使...
选项C提供了正确的调用方式,即通过定义一个变量并将其赋值为函数调用的结果。 综上所述,这些知识点覆盖了Oracle数据库的基本概念、SQL查询、存储过程和函数的使用等多个方面,对于理解和掌握Oracle数据库的核心...
有近20年使用Oracle技术产品以及Oracle数据库管理员/Oracle数据库应用管理员的经验,是真正应用集群、性能调优以及数据库内部属性方面的专家。同时是一位演讲家及Oracle ACE。 JARED STILL 从1994年就开始使用...
同时,避免在分页查询中使用聚集函数或在子查询中使用`GROUP BY`,因为这可能导致Oracle无法有效地利用索引。 总的来说,Oracle的分页查询通过嵌套查询和`ROWNUM`伪列来实现。正确地使用分页查询可以显著提高用户...
这里调用了 `SQRT` 函数计算2的平方根,并将其输出到标准输出流中。需要注意的是,在使用 `DBMS_OUTPUT` 之前,通常需要先设置服务器输出为开启状态,即通过 SQL*Plus 命令 `SET SERVEROUTPUT ON` 来实现。 ### 2. ...
2. **优化函数调用**:在查询条件中直接使用函数会降低索引的有效性。例如,将 `SELECT * FROM c WHERE to_char(c1, 'YYYYMMDDHH24:MI:SS') = '20020314:01:01';` 改为 `SELECT * FROM c WHERE c1 = to_date('...
Oracle面试题及答案总结 Oracle是一种关系数据库管理系统,广泛应用于企业级应用中。在面试过程中,了解Oracle的基本概念、存储过程、触发器、索引、约束等知识点是非常重要的。下面是一些常见的Oracle面试题及...
2.3.2.5 集合写法,飞机速度 77 2.3.2.6 直接路径,火箭速度 78 2.3.2.7 并行设置,飞船速度 79 2.3.3 精彩的总结与课程展望 80 2.3.3.1 最大的收获应该是思想80 2.3.3.2 老师的课程展望与规划81 第3章神奇,走进...
它提供了一组函数调用来创建、操纵和查询Oracle数据库,是Oracle数据库编程的基础。 5. **异步操作**:在数据库访问中,异步操作意味着当发起一个数据库请求时,主应用程序不会等待其完成,而是立即返回并继续执行...
### Oracle SQL优化讲义知识点详解 #### 一、SQL优化的重要性及原理 ##### 1.1 SQL优化的意义 - **数据库整体性能的关键因素**:在数据库应用系统中,通过优化数据库参数所能获得的性能提升大约仅占40%,而剩余60...
Debugging 功能可以帮助你调试存储过程和函数,Profiling 功能可以帮助你分析 SQL 语句的执行时间,Object Browser 功能可以帮助你浏览 Oracle 数据库中的对象。 总结 通过学习和掌握这些使用技巧,你可以更好地...