复制 CREATEORREPLACETYPEBODYWM_CONCAT_IMPLISSTATICFUNCTIONODCIAGGREGATEINITIALIZE(SCTXINOUTWM_CONCAT_IMPL)RETURNNUMBERISBEGINSCTX:=WM_CONCAT_IMPL(NULL);RETURNODCICONST.SUCCESS;END;MEMBERFUNCTIONODCIAGGREGATEITERATE(SELFINOUTWM_CONCAT_IMPL,P1INVARCHAR2)RETURNNUMBERISBEGINIF(CURR_STRISNOTNULL)THENCURR_STR:=C...
小结:如上所示,在19c中使用wm_concat函数,出现报错ora-00904.该函数在oracle 19c中不再支持. 当数据库从11g升到19c后,若该函数在代码中使用频率较高,改动代码不现实,此时就需要重新建立该函数. 2、处理步骤 说明:在19c所在服务器处理. 2.1、wmsys用户 > conn / as sysdba > alter user wmsys account unlo...
oracle 19c wm_concat替代方法 在Oracle 19c中,wm_concat函数已被弃用,因此需要使用其他方法来替代。一种常用的替代方法是使用listagg函数。listagg函数可以将多个行的值连接成一个字符串,通过指定分隔符进行分隔。 以下是使用listagg函数替代wm_concat函数的示例: 假设有一个名为employees的表,其中包含employee_id和...
MEMBER FUNCTION ODCIAGGREGATEMERGE(SELF IN OUT WM_CONCAT_IMPL, SCTX2 IN WM_CONCAT_IMPL) RETURN NUMBER IS BEGIN IF(SCTX2.CURR_STR IS NOT NULL) THEN SELF.CURR_STR := SELF.CURR_STR || ',' || SCTX2.CURR_STR ; END IF; RETURN ODCICONST.SUCCESS; END; END; / CREATE OR REPLACE FUNCT...
SCTX2 IN WM_CONCAT_IMPL) RETURN NUMBER IS BEGIN IF(SCTX2.CURR_STR IS NOT NULL) THEN SELF.CURR_STR := SELF.CURR_STR || ',' || SCTX2.CURR_STR ; END IF; RETURN ODCICONST.SUCCESS; END; END; / CREATE OR REPLACE FUNCTION wm_concat(P1 VARCHAR2) ...
SCTX2 IN WM_CONCAT_IMPL) RETURN NUMBER IS BEGIN IF(SCTX2.CURR_STR IS NOT NULL) THEN SELF.CURR_STR := SELF.CURR_STR || ',' || SCTX2.CURR_STR ; END IF; RETURN ODCICONST.SUCCESS; END; END; / --自定义行变列函数: CREATE OR REPLACE FUNCTION wm_concat(P1 VARCHAR2) ...
最近的一次oracle库大版本升级,版本从11g升级至19c;按照《Oracle番:啥是无效对象,出现时如何破?》,升级至19c后,执行如下utlrp.sql脚本编译了数据库失效对象后,还是有个应用账号报无效对象编辑失效的现象。 sql>@$ORACLE_HOME/rdbms/admin/utlrp.sql 报错信息如下: ...
方法2:19c中手动创建wm_contact函数 创建wm_concat函数 –首先使用dba账号登录oracle数据库 –解锁wmsys用户 alter user wmsys account unlock; –并为wmsys用户授权,可根据需要授权,不建议授权所有权限 grant all privileges to wmsys; –如果不知道wmsys用户的密码,可以修改其密码 ...
SCTX2 IN WM_CONCAT_IMPL) RETURN NUMBER IS BEGIN IF(SCTX2.CURR_STR IS NOT NULL) THEN SELF.CURR_STR := SELF.CURR_STR || ',' || SCTX2.CURR_STR ; END IF; RETURN ODCICONST.SUCCESS; END; END; / CREATE OR REPLACE FUNCTION wm_concat(P1 VARCHAR2) ...
MEMBER FUNCTION ODCIAGGREGATEMERGE(SELF IN OUT WM_CONCAT_IMPL, SCTX2 IN WM_CONCAT_IMPL) RETURN NUMBER IS BEGIN IF(SCTX2.CURR_STR IS NOT NULL) THEN SELF.CURR_STR := SELF.CURR_STR || ',' || SCTX2.CURR_STR ; END IF; RETURN ODCICONST.SUCCESS; END; END; /CREATE OR REPLACE ...