1

我正在使用Oracle apex 5oracle database 12c

我已经成功配置oracle apex 5oracle DB 12c.

我已经authentication scheme使用数据库表创建,该身份验证方案成功运行。

schema 但我的要求是 - 每个用户都必须在同一个应用程序中连接到自己的(例如user1 = HR;user2 = SCOTT)。

很快,应用程序必须multiple schemasrun time.

但是我无法做到这一点,我尝试了以下内容-

当前解析模式是“SCOTT”尝试使用 -

  1. apex_application.g_flow_owner := 'HR'; - 失败的
  2. 更改会话集 CURRENT_SCHEMA = 'HR'; - 失败的

我不明白该怎么做,请一些机构帮助我解决它。

4

1 回答 1

1

我认为您走在正确的轨道上,该apex_application.g_flow_owner := 'HR';命令应该可以解决问题,但是您必须将其放在共享组件>安全>安全属性>数据库会话>初始化PL/SQL代码中

编辑:首先为每个登录应用程序的用户设置一个模式,我认为这不是最好的方法。只是认为必须对所有模式进行每次修改。我建议您看看虚拟专用数据库(VPD),它可以帮助您控制数据访问。

但是,如果您仍想尝试更改架构,我认为您可以这样做。为应用程序中的每个页面创建两个进程;一个在On Load Before Header和一个在On Submit。此过程应包含以下内容:

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:在组件视图中,只需单击“流程”上的加号即可添加流程,然后在向导中为“点”选项选择“提交时 - 计算和验证之前”。 在此处输入图像描述

于 2015-11-24T08:29:48.180 回答