达梦中使用自定义聚集函数实现PG中bit_or的功能

在DM中,可以通过创建自定义的聚集函数来实现PostgreSQL的bit_or聚集函数功能。

首先,需要创建一个类型,该类型定义了一个累加方法(accumulate)和一个合并方法(merge):
 


CREATE OR REPLACE TYPE bit_or_agg_type AS OBJECT (
bit_or_result NUMBER(38),

STATIC FUNCTION ODCIAggregateInitialize(sctx IN OUT bit_or_agg_type)
RETURN NUMBER,

MEMBER FUNCTION ODCIAggregateIterate(self IN OUT bit_or_agg_type, value IN NUMBER)
RETURN NUMBER,

MEMBER FUNCTION ODCIAggregateTerminate(self IN bit_or_agg_type, returnValue OUT NUMBER, flags IN NUMBER)
RETURN NUMBER,

MEMBER FUNCTION ODCIAggregateMerge(self IN OUT bit_or_agg_type, ctx2 IN bit_or_agg_type)
RETURN NUMBER
);



然后,需要为此类型创建一个正文,该正文实现了这些方法:
 


CREATE OR REPLACE TYPE BODY bit_or_agg_type IS

STATIC FUNCTION ODCIAggregateInitialize(sctx IN OUT bit_or_agg_type)
RETURN NUMBER IS
BEGIN
sctx := bit_or_agg_type(NULL);
RETURN ODCIConst.Success;
END;

MEMBER FUNCTION ODCIAggregateIterate(self IN OUT bit_or_agg_t
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值