---修改密码,并且将限制用户下次登录的时候(第一次登录),强制要换一个新的口令:
---此过程可以完全模拟我们在标准用户的Form里面初始化用户的密码的动作! ---最后要说明的是,这个处理过程是通过研究标准创建用户的画面得出来的结果,所以,如果有需要,请放心使用!
SELECT last_logon_date,password_date,LAST_UPDATE_DATE,LAST_UPDATE_LOGIN
FROM FND_USER
WHERE USER_NAME = 'QWR01'; DECLARE
P_USER_NAME FND_USER.USER_NAME%TYPE;
P_INIT_PASSWORD VARCHAR2(30);---初始化密码,非加密的。
---
l_change_flag VARCHAR2(10);
l_reason varchar2(2000);
BEGIN
---输入参数(用户名和初始化的密码)
P_USER_NAME := 'QWR01';
P_INIT_PASSWORD := 'PWD123'; ---------
---处理--
L_change_FLAG := fnd_web_sec.change_password(P_USER_NAME,P_INIT_PASSWORD); IF L_change_FLAG = 'Y' THEN
-- Bug 7016473 - During an administrative reset, set the last_logon_date to NULL
-- instead of SYSDATE. last_logon_date should reflect the date the user last
-- logged in successfully, not the date the user's password was reset.
-- This does not regress the fix for bug 4690441 because in fnd_web_sec.disable_user
-- if last_logon_date is NULL, the last_update_date will be used which is the same
-- date of the sysadmin reset, so the effect is the same.
--
-- Reset password_date field to null to force password
-- expiration the next time user logs on.
--
UPDATE FND_USER
SET last_logon_date= NULL
,password_date = NULL
--,LAST_UPDATE_DATE = SYSDATE
--,LAST_UPDATE_LOGIN = FND_GLOBAL.LOGIN_ID
WHERE USER_NAME = P_USER_NAME; COMMIT;
----
DBMS_OUTPUT.PUT_LINE('成功初始化用户('||P_USER_NAME||')的密码为:'||P_INIT_PASSWORD);
ELSE
---显示为什么不可以修改
l_reason := fnd_message.get;
fnd_message.set_name('FND', 'FND_CHANGE_PASSWORD_FAILED');
fnd_message.set_token('USER_NAME', P_USER_NAME);
fnd_message.set_token('REASON', l_reason);
app_exception.raise_exception;
END IF;
END;