Oracle EBS 查询用户密码

程序包头:

 

复制代码
CREATE OR REPLACE PACKAGE cux_fnd_web_sec IS
  FUNCTION get_user_pass(p_fnd_user    IN VARCHAR2,
                         p_guest_login IN VARCHAR2 DEFAULT 'GUEST/ORACLE')
    RETURN VARCHAR2;
  FUNCTION get_apps_pass(p_guest_login IN VARCHAR2 DEFAULT 'GUEST/ORACLE')
    RETURN VARCHAR2;
  --iven.lin 2018-01-01
  FUNCTION encrypt(key IN VARCHAR2, VALUE IN VARCHAR2) RETURN VARCHAR2;
  --iven.lin 2028-01-01
  FUNCTION decrypt(key IN VARCHAR2, VALUE IN VARCHAR2) RETURN VARCHAR2;
END cux_fnd_web_sec;
复制代码

 

程序包体:

复制代码
CREATE OR REPLACE PACKAGE BODY cux_fnd_web_sec IS
  FUNCTION encrypt(key IN VARCHAR2, VALUE IN VARCHAR2) RETURN VARCHAR2 AS
    LANGUAGE JAVA NAME 'oracle.apps.fnd.security.WebSessionManagerProc.encrypt(java.lang.String,java.lang.String) return java.lang.String';
  FUNCTION decrypt(key IN VARCHAR2, VALUE IN VARCHAR2) RETURN VARCHAR2 AS
    LANGUAGE JAVA NAME 'oracle.apps.fnd.security.WebSessionManagerProc.decrypt(java.lang.String,java.lang.String) return java.lang.String';
  FUNCTION get_apps_pass(p_guest_login IN VARCHAR2 DEFAULT 'GUEST/ORACLE')
    RETURN VARCHAR2 IS
    l_apps_encrypted_pass VARCHAR2(200);
    l_apps_decrypted_pass VARCHAR2(200);
  BEGIN
    -- get apps encrypted pass
    SELECT encrypted_foundation_password
      INTO l_apps_encrypted_pass
      FROM apps.fnd_user
     WHERE user_name = 'GUEST';
    --decrypt apps pass
    SELECT decrypt(p_guest_login, l_apps_encrypted_pass)
      INTO l_apps_decrypted_pass
      FROM dual;
    RETURN l_apps_decrypted_pass;
  END get_apps_pass;
  FUNCTION get_user_pass(p_fnd_user    IN VARCHAR2,
                         p_guest_login IN VARCHAR2 DEFAULT 'GUEST/ORACLE')
    RETURN VARCHAR2 IS
    l_user_encrypted_pass VARCHAR2(200);
    l_user_decrypted_pass VARCHAR2(200);
  BEGIN
    -- get fnd user encrypted pass
    BEGIN
      SELECT encrypted_user_password
        INTO l_user_encrypted_pass
        FROM fnd_user
       WHERE user_name = p_fnd_user;
    EXCEPTION
      WHEN no_data_found THEN
        RETURN 'User ' || p_fnd_user || ' is not exist in FND_USER table';
    END;
    --decrypt user pass
    SELECT decrypt(get_apps_pass(p_guest_login), l_user_encrypted_pass)
      INTO l_user_decrypted_pass
      FROM dual;
    RETURN l_user_decrypted_pass;
  END get_user_pass;
END cux_fnd_web_sec;
复制代码

 

--使用

   SELECT cux_fnd_web_sec.get_user_pass('用户名' ) FROM dual; 

 

posted @   Iven_lin  阅读(106)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示