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

APEX表单主键外键查找及动态动作插入P2_USER_ID空值问题求解

APEX排班系统插入空值问题及主键查询解决方案

一、P2_USER_ID空值问题修复

你遇到的空值问题核心是动态动作执行PL/SQL时,默认不会自动提交页面项到会话状态,按以下步骤排查修复:

  • 首先调整动态动作配置:打开对应动态动作的执行PL/SQL代码动作属性,找到要提交的页面项配置框,将P2_USER_ID、P2_START_WORK_TIME等所有你代码里引用的页面项全部添加到这个列表中,APEX才会把页面上填写的数值同步到后台会话供PL/SQL读取。
  • 检查页面项的权限配置:如果P2_USER_ID是隐藏项,确认其值保护属性是否关闭,开启值保护的情况下页面项的前端修改不会被提交到后台。
  • 额外代码优化:你当前判断周六的逻辑存在多语言兼容问题,数据库默认语言非英文时会判断失效,将对应查询语句修改为:
select to_char(Start_work_date, 'DAY', 'NLS_DATE_LANGUAGE=AMERICAN') into Day_name from dual;

如果需要调试值传递问题,可以在PL/SQL代码开头加校验语句确认值是否正常传入:

IF :P2_USER_ID IS NULL THEN
  raise_application_error(-20001, 'USER_ID未正常传入,当前会话值为:'||:P2_USER_ID);
END IF;

二、APEX表单主键外键查询方法

表单绑定的主键查询

  • 打开页面设计器,选中你的表单区域,在右侧属性面板找到源分组下的主键列配置项,这里直接显示当前表单关联的表主键列。

表结构的主键外键查询

  • 方法1:在APEX后台打开SQL工作室 > 对象浏览器,找到表单绑定的数据库表,点击约束标签页,就能直接看到该表所有主键(类型为P)、外键(类型为R)的定义,以及外键关联的目标表和列。
  • 方法2:直接在SQL命令行执行查询语句(替换为你的表名,注意表名要大写):
-- 查询主键
select constraint_name, column_name 
from user_constraints c join user_cons_columns col 
on c.constraint_name = col.constraint_name 
where c.table_name = '你的表名' and c.constraint_type = 'P';

-- 查询外键
select constraint_name, column_name, r_constraint_name 
from user_constraints c join user_cons_columns col 
on c.constraint_name = col.constraint_name 
where c.table_name = '你的表名' and c.constraint_type = 'R';

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 08:06:04