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:\oracle10g\database\pwdctcsys.ora password=newpass
這個命令重新生成了數據庫的密碼文件。密碼文件的位置在ORACLE_HOME目錄下的\database目錄下。
這個密碼是修改sys用戶的密碼。除sys其他用戶的密碼不會改變。
第三步:
上面的三個文件下載后找到路徑 前面加“@” 如: SQL> @C:\Users\ylg\Desktop\oracleowmaggrb.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:\Users\ylg\Desktop\owmctab.plb;
@C:\Users\ylg\Desktop\owmaggrs.plb
@C:\Users\ylg\Desktop\owmaggrb.plb
這樣就創建建成功了趕快去試試
SELECT deptno, wmsys.wm_concat(ename) nameslist
FROM emp
GROUP BY deptno
