• 转:Oracle EBS FND User Info API


    转自:http://www.cnblogs.com/quanweiru/p/3775635.html

    1. 与用户信息相关API PKG.

    --和用户处理有关的API

    FND_USER_PKG;

     

     

    --和用户密码处理有关的API

    FND_WEB_SEC;

     

     

    --和用户职责处理有关的API

    FND_USER_RESP_GROUPS_API;

     

     

     

    2. 激活失效用户帐号.

     

    -----------------------------

    ---处理实例

    -----------------------------

     

    SELECT * FROM FND_USER WHERE USER_NAME = 'QWR01';

     

    ---更新用户,将用户失效:

    DECLARE

    BEGIN

    FND_USER_PKG.UpdateUser

    (

    x_user_name => 'QWR01'

    ,x_owner => NULL

    ,x_end_date => SYSDATE

    );

    --用下面的也可以,其实还是调用一样的处理过程。

    --FND_USER_PKG.DisableUser('QWR01');

    END;

     

     

    --批量失效用户:

    DECLARE

       CURSOR CUR_DISABLE_USER

       IS

          SELECT USER_NAME

            FROM FND_USER

           WHERE USER_NAME IN ('');

       L_DEAL_COUNT NUMBER;

    BEGIN

       L_DEAL_COUNT := 0;

       FOR REC_DISABLE_USER IN CUR_DISABLE_USER LOOP

          FND_USER_PKG.DisableUser(REC_DISABLE_USER.USER_NAME);

          L_DEAL_COUNT := L_DEAL_COUNT+L_DEAL_COUNT;

       END LOOP;

       DBMS_OUTPUT.PUT_LINE('成功失效用户数:'||L_DEAL_COUNT);

    END;

     

    ---------------

    ---批量失效用户----

    ---------------

    DECLARE

       CURSOR CUR_DISABLE_USER

       IS

          SELECT USER_NAME

            FROM FND_USER

           WHERE SYSDATE BETWEEN START_DATE AND NVL(END_DATE,SYSDATE+1)

             AND USER_NAME IN ('QWR01');

       L_DEAL_COUNT NUMBER;

    BEGIN

       fnd_global.APPS_Initialize( user_id=>1183, resp_id=>20420, resp_appl_id =>1);

       L_DEAL_COUNT := 0;

       FOR REC_DISABLE_USER IN CUR_DISABLE_USER LOOP

          FND_USER_PKG.DisableUser(REC_DISABLE_USER.USER_NAME);

          L_DEAL_COUNT := L_DEAL_COUNT+1;

       END LOOP;

       COMMIT;

       DBMS_OUTPUT.PUT_LINE('成功失效用户数:'||L_DEAL_COUNT);

    END;

     

     

    3. 激活失效用户职责.

     

    --增加用户的职责:

    FND_USER_PKG.AddResp;

     

     

    --失效用户的职责:

    FND_USER_PKG.DelResp;

     

     

    ---------------------

    ---失效用户的职责----

    ---------------------

     

    ---失效超过一定日期没使用过的职责。

    DECLARE

       CURSOR CUR_DISABLE

       IS

          SELECT FU.USER_ID

                ,FU.USER_NAME

                ,FRESP.APPLICATION_SHORT_NAME

                ,FRESP.RESPONSIBILITY_KEY

                ,FRESP.SECURITY_GROUP_KEY

                ,FRESP.RESPONSIBILITY_NAME

                ,FRESP.START_DATE

                ,FRESP.END_DATE

                ,RESP_LOGIN.MAX_START_TIME

            FROM FND_USER_RESP_GROUPS_DIRECT_V FRESP

                ,FND_USER FU

                ,(SELECT FL.USER_ID,FLR.RESPONSIBILITY_ID,MAX(FLR.START_TIME) MAX_START_TIME

                FROM FND_LOGIN_RESPONSIBILITIES FLR,FND_LOGINS FL

                 WHERE FLR.LOGIN_ID = FL.LOGIN_ID

                 GROUP BY FL.USER_ID,FLR.RESPONSIBILITY_ID) RESP_LOGIN

           WHERE 1=1

             AND FU.USER_ID = FRESP.USER_ID

             AND RESP_LOGIN.USER_ID(+) = FRESP.USER_ID

             AND RESP_LOGIN.RESPONSIBILITY_ID(+) = FRESP.RESPONSIBILITY_ID

             AND ((SYSDATE - RESP_LOGIN.MAX_START_TIME) >= 60 OR RESP_LOGIN.MAX_START_TIME IS NULL)

             AND SYSDATE BETWEEN FU.START_DATE AND NVL(FU.END_DATE,SYSDATE+1)

             AND SYSDATE BETWEEN FRESP.START_DATE AND NVL(FRESP.END_DATE,SYSDATE+1)

             AND FU.USER_NAME = 'QWR01'

             AND FRESP.RESPONSIBILITY_KEY = 'XYG-WH-WCB-OM-QUERY'

           ORDER BY FU.USER_NAME,FRESP.RESPONSIBILITY_NAME;

          

       L_DEAL_COUNT NUMBER;

    BEGIN

       fnd_global.APPS_Initialize( user_id=>1183, resp_id=>20420, resp_appl_id =>1);

       L_DEAL_COUNT := 0;

       DELETE XYG_PUB_COMMON_TABLE_TEMP;

       FOR REC_DISABLE IN CUR_DISABLE LOOP

    FND_USER_PKG.DelResp(REC_DISABLE.USER_NAME,REC_DISABLE.APPLICATION_SHORT_NAME,REC_DISABLE.RESPONSIBILITY_KEY,REC_DISABLE.SECURITY_GROUP_KEY);

          L_DEAL_COUNT := L_DEAL_COUNT+1;

       END LOOP;

       COMMIT;

       DBMS_OUTPUT.PUT_LINE('成功失效职责数:'||L_DEAL_COUNT);

    END;

     

     

    4. 用户密码相关.

     

    ---直接修改密码。这是直接修改的密码,User重新登录之后,直接登录。下面有修改密码之后,第一次用户登录必须要更改口令的过程。

    SELECT fnd_web_sec.change_password('QWR01','PASSWORD') FROM DUAL;

     

     

    ---验证密码的有效性

    SELECT fnd_web_sec.validate_login('QWR01','PASSWORD') FROM DUAL;

     

     

    ---获取错误的信息。

    select fnd_message.get() from dual;

     

     

    ---获取加密的密码

    declare

      l_enc_fnd_pwd VARCHAR2(4000);

      l_enc_user_pwd VARCHAR2(4000);

      L_RETURN VARCHAR2(4000);

    begin

    L_RETURN :=  fnd_web_sec.get_encrypted_passwords('QWR01',5954,'PASSWORD1',l_enc_fnd_pwd,l_enc_user_pwd);

    DBMS_OUTPUT.PUT_LINE('L_RETURN:'||L_RETURN);

    DBMS_OUTPUT.PUT_LINE('p_enc_fnd_pwd:'||l_enc_fnd_pwd||CHR(10)||'p_enc_user_pwd:'||l_enc_user_pwd);

    end;

     

     

    ---修改:ENCRYPTED_USER_PASSWORD,暂时没测试。

    declare

       newpass varchar2(100);

    begin

       newpass := fnd_user_pkg.getreencryptedpassword('QWR01', 'NEWKEY');

       DBMS_OUTPUT.PUT_LINE('newpass:'||newpass);

       --fnd_user_pkg.setreencryptedpassword('QWR01', newpass, 'NEWKEY');

    end;

    ############################## 通往精神的路很多,物质只是其中一种 ##############################
    http://www.onejava.com/article/oracle/wip/wiptop.htm
    https://docs.oracle.com/cd/A60725_05/html/comnls/us/index.htm
    http://www.oracle.com/technetwork/cn/developer-tools/apex/getting-started-094884-zhs.html
    https://docs.oracle.com/cd/B34956_01/current/html/docset.html
  • 相关阅读:
    【bzoj4240】有趣的家庭菜园
    「洛谷 P1801」黑匣子
    「SDOI 2009」Elaxia的路线
    NOIP 2016【蚯蚓】
    NOIP 2014【斗地主】
    尺取法
    POJ 3169 Layout
    51nod【1196】字符串的数量
    51nod1671【货物运输】
    hihocoder1075【开锁魔法】
  • 原文地址:https://www.cnblogs.com/pompeii2008/p/5335814.html
Copyright © 2020-2023  润新知