无法在 oracle apex 5 的 运行 时间更改解析模式

Not Able change parsing schema at run time in oracle apex 5

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

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

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

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

很快,应用程序必须 运行 在 multiple schemasrun time

但我无法理解,我已经尝试了以下内容 -

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

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

我不知道该怎么办,请大神帮我解决一下。

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

编辑:首先,我认为每个登录应用程序的用户都有一个模式,这不是最好的方法。试想每次修改都必须对所有模式进行。我建议你看看 Virtual Private Database (VPD) 它可以帮助你控制数据访问。

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

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:在组件视图中,只需单击 "Processes" 上的加号即可添加流程,并在向导 select "On Submit - Before Computations and Validations" 中单击点选项。