1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146
| CREATE OR REPLACE PACKAGE BODY pub_sys_package IS
--get user的两种访问1/pro PROCEDURE get_user_p(p_user OUT VARCHAR2) IS BEGIN p_user := get_user; END get_user_p; --get user的两种访问2/fun FUNCTION get_user RETURN VARCHAR2 IS v_user VARCHAR2(100); CURSOR cur_empno IS SELECT user_empno FROM gbs_user --根据登录名称查询 WHERE user_name = USER; BEGIN SELECT sys_context('user_policy_context', 'uid') INTO v_user FROM dual; IF v_user IS NULL THEN OPEN cur_empno; FETCH cur_empno INTO v_user; CLOSE cur_empno; END IF; IF v_user IS NULL THEN v_user := USER; END IF; RETURN v_user; END get_user;
--*********************************************** -- 功能说明: -- 在获得Connection时调用,用于将用户信息设置到数据库的context中 -- 参数说明: -- uid 用户标志 -- 调用函数: -- 无 --*********************************************** PROCEDURE set_attributes(uid VARCHAR2) IS regionlist VARCHAR2(100) := NULL; BEGIN dbms_session.set_context('user_policy_context', 'logon', 'true'); dbms_session.set_context('user_policy_context', 'uid', uid); END set_attributes;
--*********************************************** -- 功能说明: -- 在获得Connection时调用,用于将用户信息设置到数据库的context中。egis-pos专用 -- 在lcu长度不够的时代,保全利用该过程传入full_uid,记录在另外的字段中 -- 参数说明: -- uid 用户标志 -- 调用函数: -- 无 --*********************************************** PROCEDURE set_attributes(uid VARCHAR2, full_uid VARCHAR2) IS regionlist VARCHAR2(100) := NULL; BEGIN dbms_session.set_context('user_policy_context', 'logon', 'true'); dbms_session.set_context('user_policy_context', 'uid', uid); dbms_session.set_context('user_policy_context', 'full_uid', full_uid); END set_attributes;
--*********************************************** -- 功能说明: -- 数据库集中:将从UM中获取的region信息set到context中 -- 参数说明: -- uid 用户名 -- access_region 可访问的region列表,以,分隔 -- 调用函数: -- 无 --*********************************************** PROCEDURE set_access_attributes(uid VARCHAR2, access_region VARCHAR2) IS BEGIN dbms_session.set_context('user_policy_context', 'logon', 'true'); dbms_session.set_context('user_policy_context', 'uid', uid); dbms_session.set_context('user_policy_context', 'access_region', access_region); END set_access_attributes;
FUNCTION get_fcu(infcu IN VARCHAR2) RETURN VARCHAR2 IS v_fcu VARCHAR2(100); v_user_empno VARCHAR2(100); BEGIN v_user_empno := pub_sys_package.get_user; IF v_user_empno = 'SOLIX' THEN --如果是归档用户,则使用原有记录的数据 v_fcu := infcu; ELSE v_fcu := v_user_empno; END IF; RETURN v_fcu; END;
FUNCTION get_fcd(infcd IN VARCHAR2) RETURN DATE IS v_fcd DATE; v_user_empno VARCHAR2(100); BEGIN v_user_empno := pub_sys_package.get_user; IF v_user_empno = 'SOLIX' THEN --如果是归档用户,则使用原有记录的数据 v_fcd := infcd; ELSE v_fcd := SYSDATE; END IF; RETURN v_fcd; END;
FUNCTION get_lcu(inlcu IN VARCHAR2) RETURN VARCHAR2 IS v_lcu VARCHAR2(100); BEGIN v_lcu := pub_sys_package.get_user; IF v_lcu IS NULL THEN v_lcu := inlcu; end IF; RETURN v_lcu; END;
FUNCTION get_lcd(inlcd IN VARCHAR2) RETURN DATE IS v_lcd DATE; BEGIN v_lcd := SYSDATE; RETURN v_lcd; END;
END pub_sys_package;
|