我试图了解当我在SQL命令区域中时v('APP_ID')返回什么。当我从APEX页调用它时,它正确地返回APP_ID。但是,当在SQL命令中时,它返回值4500,这不是我的工作区中的任何app_ID。select * from apex_applications where application_id = 4500;此SQL不返回任何内容。先谢谢你。在这种情况下,我希望函数返回null。
select * from apex_applications where application_id = 4500;
kyvafyod1#
函数v('APP_ID')返回会话的应用程序ID值。因此,在您的示例中,它返回SQL命令的应用程序ID,这意味着它是Oracle Apex示例的应用程序ID。Oracle Apex本身也是Oracle Apex应用程序。这就是为什么它有一个应用程序ID,但它是Oracle内部的,因此您无法通过该查询获得任何结果。
6kkfgxo02#
如果您查看apex_applications脚本(相当多的代码,Apex 20.2超过600行),您将看到其
apex_applications
FROM
WHERE
COMMENTS
在当前工作区或数据库用户中定义的应用程序
截至v('APP_ID'):
v('APP_ID')
ID
4500
2条答案
按热度按时间kyvafyod1#
函数v('APP_ID')返回会话的应用程序ID值。因此,在您的示例中,它返回SQL命令的应用程序ID,这意味着它是Oracle Apex示例的应用程序ID。Oracle Apex本身也是Oracle Apex应用程序。这就是为什么它有一个应用程序ID,但它是Oracle内部的,因此您无法通过该查询获得任何结果。
6kkfgxo02#
如果您查看
apex_applications
脚本(相当多的代码,Apex 20.2超过600行),您将看到其FROM
子句(www_flow_current_workspace可能是 * 至关重要的 *)WHERE
子句,用于过滤我们看到的数据COMMENTS
;描述apex_applications
的那一条回答了您的问题:在当前工作区或数据库用户中定义的应用程序
截至
v('APP_ID')
:ID
(这是预期的/显而易见的)4500
,这是Apex(应用程序)本身的ID;这是因为SQL工作室是一个“通用”* 实用程序 *,与您创建的任何特定应用程序无关