Oracle自定义聚集函数

本文介绍了如何在Oracle中创建自定义的聚合函数,通过一个名为T_LINK的对象类型,实现字符串的连接操作。首先创建了对象类型T_LINK,包含初始化、迭代、终止和合并等成员函数,然后创建了类型体,定义了各个函数的具体实现。接着,定义了一个使用T_LINK的聚合函数F_LINK,最后通过创建表格TEST并进行查询,展示了自定义聚合函数的使用方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

-- 创建对象类型

CREATE OR REPLACE TYPE T_LINK AS OBJECT (
       STR VARCHAR2(30000),
       STATIC FUNCTION ODCIAGGREGATEINITIALIZE(SCTX IN OUT T_LINK) RETURN NUMBER,
       MEMBER FUNCTION ODCIAGGREGATEITERATE(SELF IN OUT T_LINK,VALUE IN VARCHAR2) RETURN NUMBER,
       MEMBER FUNCTION ODCIAGGREGATETERMINATE(SELF IN T_LINK,RETURNVALUE OUT VARCHAR2,FLAGS IN NUMBER) RETURN NUMBER,
       MEMBER FUNCTION ODCIAGGREGATEMERGE(SELF IN OUT T_LINK,CTX2 IN T_LINK) RETURN NUMBER
       )
/

 

-- 建立包体

CREATE OR REPLACE TYPE BODY T_LINK IS
STATIC FUNCTION ODCIAGGREGATEINITIALIZE(SCTX IN OUT T_LINK) RETURN NUMBER
IS
       BEGIN  
         SCTX := T_LINK(NULL);
         RETURN ODCICONST.SUCCESS;
       END;
MEMBER FUNCTION ODCIAGGREGATEITERATE (SELF IN OUT T_LINK, VALUE IN VARCHAR2) RETURN NUMBER
IS
       BEGIN
         SCTX.STR := SELF.STR || VALUE;
         RETURN  ODCICONST.SUCCESS;
       END;
MEMBER FUNCTION ODCIAGGREGATETERMINATE(SELF IN T_LINK, RETURNVALUE OUT VARCHAR2, FLAGS IN NUMBE
R) RETURN NUMBER IS
   BEGIN
          RETURNVALUE :=SELF.STR;
          RETURN ODCICONST.SUCESS;
   END;
END;

/

 

-- 创建函数

CREATE OR REPLACE FUNCTION F_LINK(P_STR VARCHAR2) RETURN VARCHAR2

       AGGREGATE USING T_LINK;

/

 

-- 建表

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

 

-- 使用F_LINK

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值