最近项目搞规则引擎,然后涉及到数据库的日期比较,而业务链比较长,再加上动态表的日期数据存的都是字符串,还有的业务表日期存的就是date类型数据,这样一来无法选用to_char 或者 是to_date ,所以写了个重载函数,直接返回的数据类型为date
我写了个oracle函数重载的demo 拿出来分享下,如下
CREATE OR REPLACE PACKAGE MyOverloadFunc AS
--@author:lidongbo
FUNCTION MyFunc(p_param IN NUMBER)
RETURN VARCHAR2;
PRAGMA RESTRICT_REFERENCES(MyFunc, WNDS, RNDS, WNPS, RNPS);
FUNCTION MyFunc(p_param IN DATE)
RETURN VARCHAR2;
PRAGMA RESTRICT_REFERENCES(MyFunc, WNDS, RNDS, WNPS, RNPS);
FUNCTION MyFunc(p_param IN VARCHAR2)
RETURN VARCHAR2;
PRAGMA RESTRICT_REFERENCES(MyFunc, WNDS, RNDS, WNPS, RNPS);
FUNCTION MyFunc(p_param OUT VARCHAR2)
RETURN VARCHAR2;
PRAGMA RESTRICT_REFERENCES(MyFunc, WNDS, RNDS, WNPS, RNPS);
FUNCTION MyFunc(p_paramA in VARCHAR2,p_ParamB in NUMBER)
RETURN VARCHAR2;
PRAGMA RESTRICT_REFERENCES(MyFunc, WNDS, RNDS, WNPS, RNPS);
END MyOverloadFunc ;
CREATE OR REPLACE PACKAGE BODY MyOverloadFunc AS
--@author:lidongbo
FUNCTION MyFunc(p_param IN NUMBER)
RETURN VARCHAR2 IS
BEGIN
RETURN 'NUMBER';
END MyFunc;
FUNCTION MyFunc(p_param IN DATE)
RETURN VARCHAR2 IS
BEGIN
RETURN 'DATE';
END MyFunc;
FUNCTION MyFunc(p_param IN VARCHAR2)
RETURN VARCHAR2 IS
BEGIN
RETURN 'IN VARCHAR2';
END MyFunc;
FUNCTION MyFunc(p_param OUT VARCHAR2)
RETURN VARCHAR2 IS
BEGIN
RETURN 'OUT VARCHAR2';
END MyFunc;
FUNCTION MyFunc(p_paramA in VARCHAR2,p_paramB in NUMBER)
RETURN VARCHAR2 IS
BEGIN
RETURN 'VARCHAR2 , NUMBER ';
END MyFunc;
END MyOverloadFunc;
客户程序
SELECT MyOverloadFunc.MyFunc(999) FROM Dual;
--结果:NUMBER
SELECT MyOverloadFunc.MyFunc(SYSDATE) FROM Dual;
--结果:DATE
SELECT MyOverloadFunc.MyFunc('string') FROM Dual;
--异常,原因不支持同个数同类型参数而IN OUT 不同重载
SELECT MyOverloadFunc.MyFunc('string',999) FROM Dual;
--结果:VARCHAR2 , NUMBER
分享到:
相关推荐
Oracle存储过程、函数和程序包是数据库管理中的关键概念,它们是PL/SQL编程的核心组成部分。存储过程是一种预编译的、命名的PL/SQL代码块,可以存储在数据库中,便于多次调用,提高效率并实现代码的模块化。在创建...
- 自定义函数:了解如何创建和使用用户自定义函数,以及函数重载的概念。 - 存储过程:深入理解存储过程的编写和调用,以及参数的传递方式。 - 触发器:学习如何利用触发器实现业务规则的自动化执行,如在数据...
Oracle8i引入了新的功能,允许从SQL语句中调用函数,但这种调用有特定限制,比如函数不能读取或修改由当前DML语句操作的表,但可以操作其他表。 总的来说,Oracle的触发器和包是强大的数据库编程工具,它们可以帮助...
学习如何创建、调用和重载方法,理解静态与实例方法的区别,以及如何使用泛型方法和扩展方法,能提升代码的可读性和复用性。 3. **WinForm控件**: WinForm是C#中的用户界面开发工具,提供了丰富的控件库,如按钮...
Oracle 提供了两种方法来加密存储过程:使用 `wrap` 工具和 `dbms_ddl` 包。 1. **wrap 工具** `wrap` 是一个操作系统级别的命令,用于加密 PL/SQL 源代码。其基本语法如下: ```bash wrap iname=input_file ...
- PL/SQL包是一种组织和封装相关功能的方法。 - **优点**: - 提高代码复用率,降低耦合度。 - **包说明与包体**: - 包说明公开接口;包体实现具体逻辑。 - **特性示例**: - 展示如何使用包来管理复杂的业务...
SQL函数 5.1 数字函数 5.2 字符函数 5.3 日期时间函数 5.4 转换函数 5.5 集合函数 5.6 其他单行函数 5.7 分组函数 5.8 对象函数 5.9 习题第 6章 访问Oracle 6.1 检索...
- 方法重载与重写:重载是同一类中方法名相同,参数列表不同;重写是子类对父类方法的重新实现。 - 接口、内部类、抽象类:接口定义行为规范,内部类是嵌套在其他类中的类,抽象类用于被继承,提供部分实现。 - ...
在Java中,面向对象编程是核心,理解类与对象的关系、构造函数、方法重载与覆盖、抽象类和接口等概念至关重要。此外,异常处理和垃圾回收机制也是Java基础的重要部分,它们确保了程序的稳定性和内存的有效管理。 ...
Oracle10g中的PL/SQL较之前的版本增加了许多新特性,例如新的数据类型、新的函数和方法等。这些新增特性增强了PL/SQL对数据操作和逻辑处理的能力,使得开发人员在编写应用程序时更加高效和灵活。 本书《精通Oracle...
内容提要部分指出,PL/SQL(Procedural Language/SQL)是Oracle数据库中一种非常重要的编程语言,它集合了传统过程式编程语言(如循环、条件分支等)和面向对象编程语言(如重载、继承等)的特性。本书全面覆盖了PL/...
此外,PL/SQL还支持重载,即可以为同一名称的函数或过程定义不同的参数列表,以适应不同场景的需求。 在Oracle 10g中,PL/SQL的性能得到了显著提升,优化器能够更好地处理PL/SQL代码,从而提高了整体的执行效率。...
3. **函数和存储过程**:如何定义、调用和重载函数与存储过程,以及它们在数据库中的作用。 4. **游标**:用于处理结果集,特别是当需要逐行处理数据时,游标是必不可少的工具。 5. **异常处理**:PL/SQL中的异常...
11. **存储过程和包的改进**:支持包的重载,使得存储过程和函数的管理更加灵活。 12. **Internet File System (iFS)**:这是一个基于HTTP的文件系统,允许数据库存储和检索非结构化数据,如文本、图像和多媒体文件...
- **方法重载**:通过不同的参数列表来实现相同的方法名。 - **静态方法与字段**:学习如何使用`static`关键字定义静态成员。 - **构造函数**:掌握默认构造函数的行为以及如何自定义构造函数。 - **访问修饰符**:...
第七章讨论了包的创建和应用,包是将相关的过程、函数和变量封装在一起的集合,支持子程序重载,并提供了更高级的封装和模块化能力。 最后,第八章介绍了触发器,这是在特定数据库事件发生时自动执行的PL/SQL代码。...