修改wm_concat逗號分隔符為!


create or replace type MyConcatImpl as object
(
str VARCHAR2(32767), -- second highest value seen so far
static function ODCIAggregateInitialize(sctx IN OUT MyConcatImpl)
return number,
member function ODCIAggregateIterate(self IN OUT MyConcatImpl,
value IN VARCHAR2) return number,
member function ODCIAggregateTerminate(self IN MyConcatImpl,
returnValue OUT VARCHAR2, flags IN number) return number,
member function ODCIAggregateMerge(self IN OUT MyConcatImpl,
ctx2 IN MyConcatImpl) return number
);
/

create or replace type body MyConcatImpl is
static function ODCIAggregateInitialize(sctx IN OUT MyConcatImpl)
return number is
begin
sctx := MyConcatImpl(NULL);
return ODCIConst.Success;
end;

member function ODCIAggregateIterate(self IN OUT MyConcatImpl, value IN VARCHAR2) return number is
begin
if self.str is not null then
self.str := self.str || '!' || value;
else
self.str := value;
end if;
return ODCIConst.Success;
end;

member function ODCIAggregateTerminate(self IN MyConcatImpl, returnValue OUT VARCHAR2, flags IN number) return number is
begin
returnValue := self.str;
return ODCIConst.Success;
end;

member function ODCIAggregateMerge(self IN OUT MyConcatImpl, ctx2 IN MyConcatImpl) return number is
begin
if ctx2.str is not null then
self.str := self.str || '!' || ctx2.str;
end if;
return ODCIConst.Success;
end;
end;
/
create or replace FUNCTION MyConcat(input VARCHAR2) RETURN VARCHAR2
PARALLEL_ENABLE AGGREGATE USING MyConcatImpl;

 

 

--select entityidsdf, MyConcat (distinct namesdf ) namesdf from TD22_SDFS_ELEMENTS where ROWNUM <= 10

group by entityidsdf ;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM