Oracle创建WM_CONCAT函数

Oracle创建WM_CONCAT函数
WM_CONCAT这个函数会出错,所以从 11g开始。官方不认可 WM_CONCAT.然后就没这个函数了,
下面就是创建WM_CONCAT这个函数的步骤

第一步:

下载三个文件:owmctab.plb 、 owmaggrs.plb 、 owmaggrb.plb

第二步:

用sqlplus登录:CONN SYS/PASS_WORD AS SYSDBA;

一、忘记除SYS、SYSTEM用户之外的用户的登录密码。
用SYS (或SYSTEM)用户登录: CONN SYS/PASS_WORD AS SYSDBA;

使用如下语句修改用户的密码: ALTER USER user_name IDENTIFIED BY "newpass";
注意:密码不能全是数字。并且不能是数字开头。否则会出现:ORA-00988: 口令缺失或无效

二、忘记SYS用户,或者是SYSTEM用户的密码。

如果是忘记SYSTEM用户的密码,可以用SYS用户登录。然后用ALTER USER 命令修改密码:

CONN SYS/PASS_WORD AS SYSDBA;
ALTER USER SYSTEM IDENTIFIED BY "newpass";

如果是忘记SYS用户的密码,可以用SYSTEM用户登录。然后用ALTER USER 命令修改密码。

CONN SYSTEM/PASS_WORD ;
ALTER USER SYSTEM IDENTIFIED BY "newpass";

三、如果SYS,SYSTEM用户的密码都忘记或是丢失。

可以使用ORAPWD.EXE 工具修改密码。
开始菜单->运行->输入‘CMD’,打开命令提示符窗口,输入如下命令:
orapwd file=D:oracle10gdatabasepwdctcsys.ora password=newpass
这个命令重新生成了数据库的密码文件。密码文件的位置在ORACLE_HOME目录下的database目录下。
这个密码是修改sys用户的密码。除sys其他用户的密码不会改变。

第三步:

上面的三个文件下载后找到路径 前面加“@” 如: SQL> @C:UsersylgDesktoporacleowmaggrb.plb;

看自己的Oracle是否有这个函数的sql为:
SELECT * FROM DBA_OBJECTS WHERE OBJECT_NAME LIKE 'WM_CONCAT%';

select account_status,wmsys.wm_concat(username) from dba_users group by account_status;

如果没有WM_CONCAT函数的话依次执行:

@C:UsersylgDesktopowmctab.plb;

@C:UsersylgDesktopowmaggrs.plb

@C:UsersylgDesktopowmaggrb.plb

这样就创建建成功了赶快去试试

SELECT deptno, wmsys.wm_concat(ename) nameslist
FROM emp
GROUP BY deptno
原文地址:https://www.cnblogs.com/yangliguo/p/7633214.html