我有 2 个 pl/sql 代码来添加和编辑用户并将其分配给角色。 但是我不知道如何修改这些代码以使Apex接受多个角色。
这是我的ADD_USER
begin
APEX_CUSTOM_AUTH.SET_USER(:P7_USER_NAME);
APEX_ACL.ADD_USER_ROLE (
p_application_id => 100,
p_user_name => :P7_USER_NAME,
p_role_static_id => :P7_USER_ROLE
);
end;
这是我的EDIT_USER
DECLARE
l_as_user_any_role BOOLEAN := false;
BEGIN
l_as_user_any_role := APEX_ACL.HAS_USER_ANY_ROLES (
p_application_id => 100,
p_user_name => :P7_USER_NAME);
if l_as_user_any_role then
APEX_ACL.REPLACE_USER_ROLES (
p_application_id => 100,
p_user_name => :P7_USER_NAME,
p_role_static_ids => wwv_flow_t_varchar2( :P7_USER_ROLE) );
end if;
end;
现在问题
1 - 如果用户只有 1 个角色,我可以添加和编辑该用户。工作正常。
2 - 如果我尝试为用户分配多个角色,我无法添加或编辑用户。
这是提交时的错误:未找到数据。
任何人都可以帮助纠正我的代码吗?
您是否尝试使用 apex_t_varchar2 类型作为 p_role_static_ids 参数:
begin
apex_util.set_workspace(:WORKSPACE);
apex_acl.add_user_roles(
-- assigns an array of roles to a user
p_application_id => 100,
p_user_name => :P7_USER_NAME,
p_role_static_ids => apex_t_varchar2('USER', 'ADMINISTRATOR')
);
commit;
end;
/
您还应该检查您的页面项目P7_USER_ROLE是否将多个值作为逗号分隔文本保存。 “未找到数据”表示系统中未找到该用户名或角色不匹配。这就是为什么,我会调试我的页面项值,看看是否真的是我所期望的。