我正在使用Oracle apex 5
,oracle database 12c
我已使用oracle apex 5
成功配置oracle DB 12c
。
我使用数据库表创建了authentication scheme
,认证方案成功运行。
但我的要求是 - 每个用户都必须连接到自己的schema
(eg.user1 = HR; user2 = SCOTT)
在相同的应用程序中。
很快,应用程序必须在multiple schemas
的{{1}}上运行。
但是我无法做到这一点,我尝试过以下的东西 -
当前解析模式是'SCOTT'尝试使用 -
更改它我不明白该怎么做,请一些人帮我解决它。
答案 0 :(得分:1)
我认为你走在正确的轨道上,apex_application.g_flow_owner := 'HR';
命令可以解决这个问题,但你必须将它放在共享组件>安全>安全属性>数据库会话>初始化PL / SQL代码
编辑:首先,为每个登录应用程序的用户提供架构,我认为这不是最好的方法。试想一下,必须对所有模式进行每次修改。我建议你看看Virtual Private Database(VPD)它可以帮助你控制数据访问。
但如果您仍想尝试更改架构,我认为您可以这样做。为应用程序中的每个页面创建两个进程;一个在在负载之前加载,另一个在提交时。此过程应包含以下内容:
BEGIN
if :APP_USER='SCOTT' THEN
apex_application.g_flow_owner := 'SCOTT';
ELSE
apex_application.g_flow_owner := 'HR';
END IF
END;
这样当Scott加载页面时,架构将更改为SCOTT,并且他会看到来自其架构的数据。当HR加载页面时,模式将更改为HR并且他会看到他的数据。提交页面时也是如此;架构首先更改,然后执行其他操作。
这第二个想法不是防弹,这就是为什么我建议你重新思考你想做什么。
Edit2:在组件视图中,只需单击“进程”上的加号即可添加进程,并在向导中为“点”选项选择“提交时 - 计算和验证前”。