Oracle APEX中SQL命令区调用v('APP_ID')返回值疑问
在Oracle APEX SQL命令区调用v('APP_ID')返回4500的原因
- 核心原因:SQL命令区(SQL Workshop的SQL Commands)运行在APEX的**内置管理应用(APP_ID=4500)**会话上下文中,所以
v('APP_ID')返回的是这个管理应用的ID,而非你自定义的应用ID。 - 为什么查不到4500:
apex_applications视图默认仅展示当前工作区下的用户自定义应用,4500是APEX全局层面的系统管理应用,不属于任何用户工作区,因此执行select * from apex_applications where application_id = 4500;无结果。 - 为什么不返回null:
v()函数是APEX会话上下文的取值函数,只要处于APEX有效会话中(SQL命令区本身就是APEX管理应用的会话),就会返回对应上下文变量的值,不会返回null。只有在完全脱离APEX会话的普通SQL环境(如直接用SQL*Plus连接数据库)调用时,才可能返回null或报错。
验证方式
在SQL命令区执行以下语句,会返回管理应用的名称,证明当前会话属于4500应用:
select v('APP_NAME') from dual;
返回结果应为SQL Workshop。
如何在SQL命令区获取自己的应用ID
如果需要查询自定义应用的ID,可通过应用名称定位:
select application_id from apex_applications where application_name = '你的应用名称';
内容的提问来源于stack exchange,提问作者robinsonlovatto
相关产品推荐
相关产品推荐

