在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