【问题标题】:Create a new Oracle Application Express (APEX)创建新的 Oracle Application Express (APEX)
【发布时间】:2016-02-01 09:19:04
【问题描述】:

让我解释一下我的情况。 现在我需要创建一个新的 APEX 应用程序。但我没有使用 APEX SQL Workshop(图 1)作为数据库。正在通过包检索数据。 请参考图2中的层次结构设计。从层次结构中,数据存储在 D1EDATA 的 Table_A 中。 D1EDATA 有一个名为 Package_A 的包。 D1APEX 是应用程序。它调用包来选择、更新或删除Table_A中存储的记录

图 1:开发环境

图 2:应用程序架构设计


我的问题如下:

  1. 如何从 APEX 应用程序调用包中的函数/过程?
  2. 如何获取已登录的用户 ID。哪个表存储 APEX 用户详细信息?

【问题讨论】:

    标签: database oracle server oracle-apex-5


    【解决方案1】:
    1. 第一个问题很简单:要在 apex 应用程序中运行函数/过程,您必须执行以下操作:
      • 在您的应用程序中创建一个页面(或使用以前创建的)
      • 点击Regions标签附近的+按钮创建新区域;
      • 在创建区域向导中,选择Form - Form on a procedure
      • 在接下来的步骤中,选择您的过程/功能并填写其他必填字段。

    Apex 将创建一个表单,其中包含每个过程/函数参数的字段以及按钮 Run(我不记得确切名称)和 Cancel

    1. 您的第二个问题很大。首先,这取决于您的身份验证方案。有很多选项:数据库帐户、APEX 帐户、自定义、LDAP 等等。
      • 数据库帐户-您使用数据库帐户登录到您的应用程序。在这种情况下,apex 在系统 oracle 表中使用登录名和密码。
      • APEX 帐户 - 您使用开发人员帐户登录 APEX IDE 和相同的帐户 - 登录应用程序。
      • 自定义方案 - 您自己创建所有表、检查用户登录名和密码的程序等。

    UPD
    您可以使用v 函数:v('APP_USER') 在 PL/SQL 代码中定义您的用户名(无论当前身份验证方案如何)。但请记住,如果您不是从 APEX 应用程序调用它,此函数将返回 NULL。有一种通用的调用方式(在UPDATE 语句中):

    update mt_table set username = nvl(v('APP_USER'), user);
    

    【讨论】:

    • 您好,谢谢您的回复。关于问题2,例子是:用户在APEX应用中更新一条记录。当用户单击提交按钮时,APEX 将调用 D1APEX 接口中的过程 A,过程 A 将调用 D1EDATA 中的过程 B 来更新特定记录。对于我的情况,我想用用户名更新列 UpdatedBy。这两个包都是用 Toad 编写的
    • @Jonas 你想知道,如何在 PL/SQL 中获取 APEX 用户的名称,对吧?像这样的东西:update mt_table set username = v('APP_USER')
    • 如果我想在Oracle APEX中获取用户名,我可以使用update_template(p_last_update_by => :USER)之类的代码吗? ?
    • 否,APEX 中用户名的参数是APP_USER,而不是USER
    • 我在 SQL Workshop 中执行了select v('USER')from dual,它也返回了登录名
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-11
    • 1970-01-01
    • 2022-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多