Oracle Apex中基于APP_USER过滤EVENTS报表无数据,求解决方案
问题排查与解决方案
1. 核对字段名匹配性
你的表定义字段为id、event name、event type、date、location、user_id,但SQL语句里引用的是EVENTS.EVENT、EVENTS.EVENT_DATE、EVENTS.EVENT_OWNER——这些字段在表定义里不存在,会直接导致查询异常:
- 若数据库严格校验字段,会直接报错;若你的表实际字段名和描述不符(比如真实字段是
EVENT、EVENT_DATE),请统一SQL和表结构的字段名 - 带空格的字段(如
event name)在SQL中需要用特殊符号包裹:Oracle用双引号"EVENT NAME",MySQL用反引号`event name`,否则数据库无法识别
2. 验证绑定变量值
:APP_USER_ID是应用级绑定变量,需确认:
- 变量是否正确传递了当前登录用户的
user_id值,而非用户名、SessionID等其他标识 - 手动替换变量为真实用户ID执行SQL,比如
SELECT * FROM EVENTS WHERE USER_ID = 123;,看是否能返回数据
3. 确认表中存在目标数据
直接执行全量查询SELECT * FROM EVENTS;,检查表中是否有当前用户的事件记录。如果表本身无对应数据,自然会返回no data found
修正后的参考SQL(基于你给出的表字段定义)
SELECT "EVENT NAME" AS event_name, "EVENT TYPE" AS event_type, LOCATION, DATE AS event_date, USER_ID FROM EVENTS WHERE USER_ID = :APP_USER_ID;
内容的提问来源于stack exchange,提问作者Retal Omar
相关产品推荐
相关产品推荐

