为了账号安全,请及时绑定邮箱和手机立即绑定

请教下在oracle会出现什么不可控因素吗 ?如果会,是什么样的?

请教下在oracle会出现什么不可控因素吗 ?如果会,是什么样的?

慕桂英3389331 2022-12-17 17:13:16
create or replace TYPE BODY en_concat_im ISSTATIC FUNCTION ODCIAGGREGATEINITIALIZE(SCTX IN OUT en_concat_im)RETURN NUMBER ISBEGINSCTX := en_concat_im(NULL);RETURN ODCICONST.SUCCESS;END;MEMBER FUNCTION ODCIAGGREGATEITERATE(SELF IN OUT en_concat_im,P1 IN VARCHAR2) RETURN NUMBER ISBEGINIF (CURR_STR IS NOT NULL) THENCURR_STR := CURR_STR || ';' || P1;ELSECURR_STR := P1;END IF;RETURN ODCICONST.SUCCESS;END;MEMBER FUNCTION ODCIAGGREGATETERMINATE(SELF IN en_concat_im,RETURNVALUE OUT VARCHAR2,FLAGS IN NUMBER)RETURN NUMBER ISBEGINRETURNVALUE := CURR_STR;RETURN ODCICONST.SUCCESS;END;MEMBER FUNCTION ODCIAGGREGATEMERGE(SELF IN OUT en_concat_im,SCTX2 IN en_concat_im) RETURN NUMBER ISBEGINIF (SCTX2.CURR_STR IS NOT NULL) THENSELF.CURR_STR := SELF.CURR_STR || ';' || SCTX2.CURR_STR;END IF;RETURN ODCICONST.SUCCESS;END;END;create or replace FUNCTION en_concat(P1 VARCHAR2) RETURN VARCHAR2 AGGREGATE USING en_concat_im ;create or replace TYPE en_concat_im AUTHID CURRENT_USER AS OBJECT(CURR_STR VARCHAR2(32767),STATIC FUNCTION ODCIAGGREGATEINITIALIZE(SCTX IN OUT en_concat_im)RETURN NUMBER,MEMBER FUNCTION ODCIAGGREGATEITERATE(SELF IN OUT en_concat_im,P1 IN VARCHAR2) RETURN NUMBER,
查看完整描述

1 回答

?
阿晨1998

TA贡献2037条经验 获得超6个赞

insert into test values('aaa','1');
insert into test values('bbb','2');
insert into test values('ccc','5');
insert into test values('ddd','3');
select wm_concat(a),wm_concat(b) from test;

WM_CONCAT(A) WM_CONCAT(B)
1 aaa,bbb,ccc,ddd 1,2,5,3

没有问题的。

drop table test;
create table test(a varchar2(30),b varchar2(30),c varchar2(30));
insert into test values('aaa','1','a');
insert into test values('bbb','2','a');
insert into test values('ccc','5','a');
insert into test values('ddd','3','a');
insert into test values('aaaaa','11','b');
insert into test values('bbbbb','22','b');
insert into test values('ccccc','55','b');
insert into test values('ddddd','33','b');
select c,max(a),max(b) from (
select c,wm_concat(a) over (partition by c order by a) a,
wm_concat(b) over (partition by c order by a) b from test
) tt
group by c ; 
C MAX(A) MAX(B)

a aaa,bbb,ccc,ddd 1,2,5,3

b aaaaa,bbbbb,ccccc,ddddd 11,22,55,33


查看完整回答
反对 回复 2022-12-21
  • 1 回答
  • 0 关注
  • 64 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信