`

Oracle函数重载方法

阅读更多
最近项目搞规则引擎,然后涉及到数据库的日期比较,而业务链比较长,再加上动态表的日期数据存的都是字符串,还有的业务表日期存的就是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 










1
0
分享到:
评论
2 楼 ldbjakyo 2010-08-13  
 
1 楼 ldbjakyo 2010-08-13  
很多人都说,参数个数一致不支持重载,我办到了

相关推荐

    oracle存储过程函数程序包课件ppt

    Oracle存储过程、函数和程序包是数据库管理中的关键概念,它们是PL/SQL编程的核心组成部分。存储过程是一种预编译的、命名的PL/SQL代码块,可以存储在数据库中,便于多次调用,提高效率并实现代码的模块化。在创建...

    oracle教学ppt(最全面).zip

    - 自定义函数:了解如何创建和使用用户自定义函数,以及函数重载的概念。 - 存储过程:深入理解存储过程的编写和调用,以及参数的传递方式。 - 触发器:学习如何利用触发器实现业务规则的自动化执行,如在数据...

    数据库oracle触发器课件

    Oracle8i引入了新的功能,允许从SQL语句中调用函数,但这种调用有特定限制,比如函数不能读取或修改由当前DML语句操作的表,但可以操作其他表。 总的来说,Oracle的触发器和包是强大的数据库编程工具,它们可以帮助...

    c#技术资源大全 语言规范 函数方法集

    学习如何创建、调用和重载方法,理解静态与实例方法的区别,以及如何使用泛型方法和扩展方法,能提升代码的可读性和复用性。 3. **WinForm控件**: WinForm是C#中的用户界面开发工具,提供了丰富的控件库,如按钮...

    oracle 存储过程的加密

    Oracle 提供了两种方法来加密存储过程:使用 `wrap` 工具和 `dbms_ddl` 包。 1. **wrap 工具** `wrap` 是一个操作系统级别的命令,用于加密 PL/SQL 源代码。其基本语法如下: ```bash wrap iname=input_file ...

    Oracle PLSQL编程最佳实践中文版

    - PL/SQL包是一种组织和封装相关功能的方法。 - **优点**: - 提高代码复用率,降低耦合度。 - **包说明与包体**: - 包说明公开接口;包体实现具体逻辑。 - **特性示例**: - 展示如何使用包来管理复杂的业务...

    精通Oracle.10g.PLSQL编程

    SQL函数 5.1 数字函数 5.2 字符函数 5.3 日期时间函数 5.4 转换函数 5.5 集合函数 5.6 其他单行函数 5.7 分组函数 5.8 对象函数 5.9 习题第 6章 访问Oracle 6.1 检索...

    Oracle面试资料

    - 方法重载与重写:重载是同一类中方法名相同,参数列表不同;重写是子类对父类方法的重新实现。 - 接口、内部类、抽象类:接口定义行为规范,内部类是嵌套在其他类中的类,抽象类用于被继承,提供部分实现。 - ...

    java基础知识教程ppt(全)+oracle+版本控制工具使用

    在Java中,面向对象编程是核心,理解类与对象的关系、构造函数、方法重载与覆盖、抽象类和接口等概念至关重要。此外,异常处理和垃圾回收机制也是Java基础的重要部分,它们确保了程序的稳定性和内存的有效管理。 ...

    精通oracle10g PL/SQL编程

    Oracle10g中的PL/SQL较之前的版本增加了许多新特性,例如新的数据类型、新的函数和方法等。这些新增特性增强了PL/SQL对数据操作和逻辑处理的能力,使得开发人员在编写应用程序时更加高效和灵活。 本书《精通Oracle...

    精通Oracle.10g.Pl.SQL编程

    内容提要部分指出,PL/SQL(Procedural Language/SQL)是Oracle数据库中一种非常重要的编程语言,它集合了传统过程式编程语言(如循环、条件分支等)和面向对象编程语言(如重载、继承等)的特性。本书全面覆盖了PL/...

    精通Oracle.10g.Pl.SQL编程.rar

    此外,PL/SQL还支持重载,即可以为同一名称的函数或过程定义不同的参数列表,以适应不同场景的需求。 在Oracle 10g中,PL/SQL的性能得到了显著提升,优化器能够更好地处理PL/SQL代码,从而提高了整体的执行效率。...

    oracle开发资料第一部分

    3. **函数和存储过程**:如何定义、调用和重载函数与存储过程,以及它们在数据库中的作用。 4. **游标**:用于处理结果集,特别是当需要逐行处理数据时,游标是必不可少的工具。 5. **异常处理**:PL/SQL中的异常...

    oracle 9i(全).part03.rar

    11. **存储过程和包的改进**:支持包的重载,使得存储过程和函数的管理更加灵活。 12. **Internet File System (iFS)**:这是一个基于HTTP的文件系统,允许数据库存储和检索非结构化数据,如文本、图像和多媒体文件...

    Oracle认证Java SE 8程序员考纲(中文版)

    - **方法重载**:通过不同的参数列表来实现相同的方法名。 - **静态方法与字段**:学习如何使用`static`关键字定义静态成员。 - **构造函数**:掌握默认构造函数的行为以及如何自定义构造函数。 - **访问修饰符**:...

    plsql_oracle 编程

    第七章讨论了包的创建和应用,包是将相关的过程、函数和变量封装在一起的集合,支持子程序重载,并提供了更高级的封装和模块化能力。 最后,第八章介绍了触发器,这是在特定数据库事件发生时自动执行的PL/SQL代码。...

Global site tag (gtag.js) - Google Analytics