You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Oracle APEX:如何将APP_USER替换为用户姓名而非登录名?

在Oracle APEX中显示用户姓名而非登录名的正确实现方法

你的代码存在的核心问题

  • 数据源错误:all_users是数据库级用户视图,并不包含用户姓名(first_name)字段,APEX的用户信息存储在APEX_WORKSPACE_APEX_USERS(对应新版APEX的APEX_USERS视图)中
  • 输出方式不合理:htp.prn直接输出的内容无法在页面上灵活复用,应该将用户姓名存入应用项后再引用
  • 放置位置错误:9999密码页面负责密码相关操作,不适合用来初始化用户姓名这类会话级信息

正确实现步骤

1. 创建应用级存储项

先在应用的共享组件 > 应用项中创建一个项(比如命名为P_USER_FULL_NAME),用于存储用户的全名。

2. 编写正确的PL/SQL逻辑获取姓名

替换你的查询语句,从APEX专属用户表中提取信息:

DECLARE
    v_first_name VARCHAR2(20);
    v_last_name VARCHAR2(20);
BEGIN
    SELECT first_name, last_name
      INTO v_first_name, v_last_name
      FROM APEX_WORKSPACE_APEX_USERS
     WHERE user_name = :APP_USER;

    :P_USER_FULL_NAME := v_first_name || ' ' || v_last_name;
EXCEPTION
    WHEN NO_DATA_FOUND THEN
        :P_USER_FULL_NAME := :APP_USER; -- 查询不到姓名时,默认显示登录名
END;

3. 放置代码的正确位置

  • 方案一:认证后执行的应用进程
    在共享组件 > 应用进程中新建进程:

    • 进程点选择After Authentication(用户登录认证完成后)
    • 类型选择PL/SQL
    • 将上述代码粘贴到进程体中
  • 方案二:应用项的自动计算
    编辑之前创建的P_USER_FULL_NAME项:

    • 计算类型选择PL/SQL表达式
    • 计算点设置为After Authentication
    • 计算体填入上述PL/SQL逻辑

4. 在页面中展示姓名

在需要显示用户姓名的页面(比如导航栏、首页),直接引用&P_USER_FULL_NAME.即可。例如在页面的HTML区域中添加:

欢迎回来,&P_USER_FULL_NAME.

内容的提问来源于stack exchange,提问作者Sergey

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 15:52:11