`
sbpya
  • 浏览: 615937 次
  • 性别: Icon_minigender_1
  • 来自: 杭州,长沙
社区版块
存档分类
最新评论

用一个实例讲解Oracle的自定义聚集函数

阅读更多
Oracle数据库的定制功能十分强大。Oracle不但允许用户定制自己的函数,还可以定制自己的聚集函数和分析函数。

本文将着重介绍使用自定义聚集函数建立一个字符串“sum”的示例:

 

SQL> CREATE OR REPLACE TYPE T_LINK AS OBJECT (

2 STR VARCHAR2(30000),

3 STATIC FUNCTION ODCIAGGREGATEINITIALIZE

(SCTX IN OUT T_LINK) RETURN NUMBER,

4 MEMBER FUNCTION ODCIAGGREGATEITERATE

(SELF IN OUT T_LINK, VALUE IN VARCHAR2) RETURN NUMBER,

5 MEMBER FUNCTION ODCIAGGREGATETERMINATE

(SELF IN T_LINK, RETURNVALUE OUT VARCHAR2, FLAGS IN NUMBE

R) RETURN NUMBER,

6 MEMBER FUNCTION ODCIAGGREGATEMERGE

(SELF IN OUT T_LINK, CTX2 IN T_LINK) RETURN NUMBER

7 )

8 /

类型已创建。

SQL> CREATE OR REPLACE TYPE BODY T_LINK IS

2 STATIC FUNCTION ODCIAGGREGATEINITIALIZE

(SCTX IN OUT T_LINK) RETURN NUMBER IS

3 BEGIN

4 SCTX := T_LINK(NULL);

5 RETURN ODCICONST.SUCCESS;

6 END;

7

8 MEMBER FUNCTION ODCIAGGREGATEITERATE

(SELF IN OUT T_LINK, VALUE IN VARCHAR2) RETURN NUMBER IS

9 BEGIN

10 SELF.STR := SELF.STR || VALUE;

11 RETURN ODCICONST.SUCCESS;

12 END;

13

14 MEMBER FUNCTION ODCIAGGREGATETERMINATE

(SELF IN T_LINK, RETURNVALUE OUT VARCHAR2, FLAGS IN NUMBE

R) RETURN NUMBER IS

15 BEGIN

16 RETURNVALUE := SELF.STR;

17 RETURN ODCICONST.SUCCESS;

18 END;

19

20 MEMBER FUNCTION ODCIAGGREGATEMERGE

(SELF IN OUT T_LINK, CTX2 IN T_LINK) RETURN NUMBER IS

21 BEGIN

22 NULL;

23 RETURN ODCICONST.SUCCESS;

24 END;

25 END;

26 /

类型主体已创建。

SQL> CREATE OR REPLACE FUNCTION F_LINK

(P_STR VARCHAR2) RETURN VARCHAR2

2 AGGREGATE USING T_LINK;

3 /

函数已创建。

SQL> CREATE TABLE TEST (ID NUMBER, NAME VARCHAR2(20));

表已创建。

SQL> INSERT INTO TEST VALUES (1, 'AAA');

已创建 1 行。

SQL> INSERT INTO TEST VALUES (2, 'BBB');

已创建 1 行。

SQL> INSERT INTO TEST VALUES (1, 'ABC');

已创建 1 行。

SQL> INSERT INTO TEST VALUES (3, 'CCC');

已创建 1 行。

SQL> INSERT INTO TEST VALUES (2, 'DDD');

已创建 1 行。

SQL> COMMIT;

提交完成。

SQL> COL NAME FORMAT A60

SQL> SELECT ID, F_LINK(NAME) NAME FROM TEST GROUP BY ID;

ID NAME

---------- ------------------------------------------------------

1 AAAABC

2 BBBDDD

3 CCC

分享到:
评论

相关推荐

    Oracle自定义聚集函数使用

    为了更具体地理解自定义聚集函数的实现,我们可以通过一个具体的例子来说明——创建一个用于处理权限位运算(如bitand)的聚集函数。首先,我们需要定义一个类型`permission_bitand`,其中包含上述四个关键的聚集...

    Oracle自定义函数

    - 可以创建一个存储过程 `Pro_Fun_test1_1` 来调用这个函数: ```sql CREATE OR REPLACE PROCEDURE Pro_Fun_test1_1(p_num IN NUMBER, p_result OUT NUMBER) AS BEGIN p_result := Fun_test1(p_num); END Pro_...

    Oracle经典自定义创建函数和存储过程

    自定义函数不能被直接在Java中调用,可以通过存储过程调用函数的方法。本文采用实例的方法,介绍如何在Oracle数据库客户端PL/SQL中创建自定义函数,然后创建相应的存储过程调用该函数,最终实现一个实例计算。

    oracle删除和重建实例

    删除 Oracle 实例是一个复杂的过程,需要遵循一定的步骤,以免出现意外错误。下面是删除 Oracle 实例的步骤: 1. 删除实例记录:可以使用 dbca 工具或手动删除实例记录。使用 dbca 工具需要从图形界面运行 dbca,...

    [回调函数讲解及应用实例]回调函数讲解及应用实例

    回调函数回调函数讲解及应用实例回调函数讲解及应用实例回调函数讲解及应用实例回调函数讲解及应用实例回调函数讲解及应用实例回调函数讲解及应用实例回调函数讲解及应用实例回调函数讲解及应用实例回调函数讲解及...

    oracle plsql开发代码实例讲解

    oracle plsql 代码入门到精通实例演示讲解,plsql编程入门教程

    自定义EL函数

    在自定义EL函数时,我们需要创建一个TLD文件来声明我们的函数。 创建自定义EL函数的第一步是编写Java类,这个类将包含我们要暴露给EL的函数。例如,我们可以创建一个名为`Utils`的类,并在其中定义一个名为`...

    linux下oracle安装两个实例一个监听的配置

    在Linux环境下配置Oracle数据库时,有时我们需要在同一台服务器上安装多个Oracle实例,并通过一个监听器进行管理。这种配置可以提高资源利用率并简化网络管理。本文将详细介绍如何在Linux下为两个Oracle实例配置一个...

    linux下oracle手动建实例

    3. **SID (System Identifier)**:每个Oracle实例都有一个唯一的SID来标识它。 4. **数据库认证方式**:常见的认证方式包括密码文件认证、操作系统认证等。 5. **脚本编写**:创建数据库及执行数据库管理任务通常...

    linux服务器上创建第二个ORACLE实例

    原创:在linux 服务器上创建第二个ORACLE数据的实例,手工启动或开机自启动的设置。

    【Python语法实例】-11自定义函数

    【Python语法实例】-11自定义函数

    Excel-VBA宏编程实例源代码-快速输入月份名称的自定义数组函数.zip

    总之,这个实例提供了一个很好的学习VBA宏编程的机会,特别是关于自定义数组函数的使用,对于经常处理大量日期数据的用户来说,是提高效率的好工具。通过深入理解并实践此类代码,可以提升Excel办公自动化的能力。

    大牛出手Oracle SQL优化实例讲解

    1.Oracle如何得到一个很大的表 2.loop insert 实例 3.autotrace验证索引的性能到底有多大? 4.EXPLAIN验证SQL是否走索引 5.结合autotrace创建并验证函数索引 6.sql trace分析工具--TKPROF详细讲解 7.V$SQL视图详解加...

    Mathcad自定义函数.xmcd

    资源为多个自定义函数的mathcad实例,并且具有多图展示

    Excel函数大全【实例讲解】.xls

    excle 函数学习资源,文档中包含了常用的excel函数的使用详解,供大家参考。是一组常用Excel函数公式的用法,学会这些套路,让工作效率再高一丢丢。

    Excel-VBA宏编程实例源代码-自定义函数-汇率转换.zip

    本压缩包“Excel-VBA宏编程实例源代码-自定义函数-汇率转换.zip”提供了一个具体的VBA应用示例,即自定义函数用于货币汇率转换。 一、VBA基础知识 1. VBA是Microsoft Office套件中的内置编程语言,允许用户编写脚本...

    Oracle数据库实例讲解.pdf

    Oracle数据库实例由一组后台进程和一个共享内存区域组成,这些进程和内存区域在同一个计算节点上共享。实例并不直接存储数据,而是管理和操作数据库的逻辑结构。数据库则是实际存储数据的物理文件集合,这些文件存储...

    Excel-VBA宏编程实例源代码-自定义函数-计算日期差.zip

    这个压缩包"Excel-VBA宏编程实例源代码-自定义函数-计算日期差.zip"显然是一个关于如何使用VBA编写自定义函数来计算两个日期之间差值的实例。下面我们将深入探讨这个主题,以及与之相关的知识点。 1. **VBA基础**:...

Global site tag (gtag.js) - Google Analytics