1、创建函数
create [or replace] function function_name
[(parameter_name [in | out | in out] type [,...])]
retutn type
is|as
begin
function_body;
end;
说明:
函数必须有返回值。
or replace:如果函数已经存在,则替换现有的函数;
function_name:函数名;
parameter_name :参数名;
in | out | in out:指定参数的模式;
function_body:包含执行任务函数的SQL和PL/SQL语句。
2、函数实例
create or replace function get_publicholidaytime(fromtime in Date, totime in Date, isAvailable in number) return number
as
--定义变量
free_day number :=0;
mindate Date;
maxdate Date;
total number :=0;
fromdate Date := TO_DATE(to_char(fromtime,'yyyy/MM/dd'),'yyyy/MM/dd');
todate Date := TO_DATE(to_char(totime,'yyyy/MM/dd'),'yyyy/MM/dd');
begin
--if语句
if isAvailable=1 then
--sql语句
select min(calendar_date) ,max(calendar_date),count(calendar_date) into mindate,maxdate,total
from T_BI_TNT_DATE
where calendar_date between fromdate and todate
and IS_PUBLIC_HOLIDAY=1 ;
if mindate = fromdate then
total := total - 1;free_day := free_day + ((mindate + 1) - fromtime);
end if;
if maxdate = todate then
total := total - 1;free_day := free_day + (totime - maxdate);
end if;
if mindate = maxdate then
free_day := totime - fromtime;
else
free_day := free_day + total;
end if;
end if;
return free_day;
end get_publicholidaytime;
3、调用函数
select get_publicholidaytime(sysdate,sysdate + 1,1) from dual;
4、删除函数
drop function get_publicholidaytime;
分享到:
相关推荐
在Oracle中,我们还可以创建函数(Function),它是类似于存储过程的可调用单元,但必须返回一个值。函数的创建语法类似于存储过程,只需在PROCEDURE关键字后改为FUNCTION,并在结束处指定返回类型: ```sql CREATE...
总结来说,这个Oracle创建触发器的实例展示了如何使用触发器进行权限控制和日志记录,同时提供了关于如何处理和阻止非预期的DDL操作的示例。这在大型企业系统中尤其重要,因为它们需要严格的数据安全性和审计追踪...
本资料集是"Oracle PL/SQL实例精解",提供了丰富的源代码示例,帮助读者深入理解和应用这一技术。 首先,我们来看End_of_Chapter_Exercises.zip,这可能包含了每个章节结束时的练习题或项目。这些练习通常设计得...
本主题将深入探讨Oracle中的几个核心概念:函数、存储过程、游标以及简单的实例,这些都是数据库管理员和开发人员日常工作中不可或缺的部分。 首先,我们来了解**Oracle函数**。函数是预定义的代码块,接受零个或多...
在这个"oracle查询语句实例"的压缩包中,你将找到一系列实用的查询示例,帮助你深入理解和熟练掌握Oracle SQL的用法。 1. **基础查询** - `SELECT`语句:用于从表中检索数据,基本格式是`SELECT column1, column2 ...
自定义函数不能被直接在Java中调用,可以通过存储过程调用函数的方法。本文采用实例的方法,介绍如何在Oracle数据库客户端PL/SQL中创建自定义函数,然后创建相应的存储过程调用该函数,最终实现一个实例计算。
PL/SQL是Oracle数据库中用于创建存储过程、函数、触发器、包等数据库对象的主要工具。第4版特别关注了在Oracle 11g环境下的新特性,如性能优化、错误处理和并发控制等。 1. **基础语法**:PL/SQL的基础包括声明变量...
在Oracle中,可以使用PL/SQL(Oracle的编程语言扩展)来实现这些功能,通过存储过程、触发器和函数来处理业务逻辑。 5. **复杂性**:提到“在线考试系统(复杂)”,可能意味着该系统包含了高级特性,如动态试题...
在"Oracle练习"中,可能会涉及创建、修改和删除这些对象的实例。 4. **表的设计**:良好的数据库设计至关重要,包括合理的数据类型选择,主键和外键的设置,以及适当的约束。实例可能涵盖如何创建符合第三范式的...
在"Oracle PL/SQL实例精解 数据库建立代码"中,我们将深入探讨如何在Oracle数据库中使用PL/SQL来构建一个名为"student"的模式,这包括创建数据库对象如表、索引,以及填充样本数据。 首先,"student"模式可能包含一...
12. **REPLACE()**:这个函数将字符串s1中的所有实例替换为s2。如,REPLACE('he love you','he','i')返回'i love you'。 13. **SOUNDEX()**:SOUNDEX()函数返回一个与输入字符串发音相似的代码,可用于进行基于发音...
-- 创建strIds对象实例 PIPE ROW (v_strIds); -- 将对象插入结果集中 END LOOP; CLOSE res_sql; EXCEPTION WHEN OTHERS THEN RETURN; END; ``` ### 动态游标 在这个示例中,动态游标通过变量`res_sql`...
PL/SQL是Oracle特有的过程式语言,用于编写存储过程、函数和触发器,是实现业务逻辑和数据库交互的关键。 文档资源是学习过程中不可或缺的部分。它们可能包含了详细的步骤指南、代码示例、问题解决方案以及最佳实践...
《Oracle PLSQL实例精解(原书第4版)》是一本深入探讨Oracle数据库编程语言PL/SQL的专业书籍。此书旨在帮助读者掌握PL/SQL的精髓,通过丰富的实例和详细解析,提升在Oracle数据库环境中的开发能力。作者在书中不仅...
这个实例集是开发者和学习者宝贵的资源,它涵盖了各种功能和应用场景,旨在帮助用户深入理解Oracle Developer 2000的工作原理及其在实际项目中的应用。 Oracle Developer 2000主要由两大部分组成:Oracle Forms和...
在给定的文件信息中,标题“oracle拆分列实例”明确指出了这一主题,而描述则暗示了实现这一功能的复杂性和耗时性。下面将详细解释如何使用Oracle SQL来实现列的拆分。 ### Oracle拆分列的基本概念 在Oracle中,...
### Oracle详细实例教程知识点概述 #### 一、引言与背景 - **Oracle与SUN合并的战略意义**: - **云计算与数据的重要性**:随着云计算的发展,数据成为了核心资源,而Oracle作为数据库领域的领导者,其对数据处理...
Oracle数据库中的RATIO_TO_REPORT()函数是一个非常有用的分析函数,尤其在进行数据比例分析和比较时。这个函数能够计算一个值相对于所有值总和的比例,返回的结果是一个百分比。配合OVER()子句,它可以用于全局或者...
Oracle PL/SQL是一种强大的编程语言,它将关系数据库的强大功能与结构化编程语言的灵活性结合在一起,主要用于在Oracle数据库环境中创建复杂的业务逻辑和数据处理程序。这个“Oracle PL SQL实例精讲(中英文版)”...