我在Oracle Apex中创建了一个任务分配应用程序,其中包含几个基于我创建的表的交互式网格页面。该表名为DEMANDE_INTERVENTION
,其中有一列名为DEMANDEUR
。在一个页面中,我希望只显示值为DEMANDEUR
的记录,该值等于登录用户的名称。我尝试在WHERE
子句中添加条件DEMANDEUR=:APP_USER
,但似乎不起作用。我也试着使用了以下条件:DEMANDEUR = V('APP_USER')
DEMANDEUR =SYS_CONTEXT('APEX$SESSION', 'APP_USER')
DEMANDEUR =SYS_CONTEXT('USERENV','AUTHENTICATED_IDENTITY')
DEMANDEUR =SYS_CONTEXT('USERENV','CURRENT_SCHEMA')
DEMANDEUR =SYS_CONTEXT('USERENV','CURRENT_USER')
我还尝试使用查询来检查:APP_USER
内部的内容:
select DEMANDEUR,
INTERVENTION,
ETAT_IMPORTANCE,
"VALIDÉE_PAR",
ETAT_INTERVENTION,
LIEU,
"DATE_DE_CRÉATION",
OBSERVATION,
:APP_USER
from DEMANDE_INTERVENTION
但只显示了第一列:
我能做些什么来解决这个问题?
2条答案
按热度按时间smdnsysy1#
我不使用APEX,但如果它以您自己(私人帐户)而不是普通应用帐户的身份登录,并且这是您所指的用户,那么无论您的客户端应用程序环境是什么,在SQL或PL/SQL中的数据库本身中,您始终可以使用变量
USER
来获取当前登录用户的身份。所以:应该对你有用还提供了几个“USERENV”选项:
mec1mxoz2#
在任何顶点会话中,当前用户的值存储在绑定变量
APP_USER
中。在sql/plsql中,可以使用语法:APP_USER
将此变量作为绑定变量访问。请注意,在您的示例中,“:”和“APP_USER”之间没有空格。如果你想访问一个对象(view/package/trigger/...)中的变量,那么绑定变量不是一个选项。在该原因中,sys_context变量
SYS_CONTEXT('APEX$SESSION', 'APP_USER')
或旧的“V”函数(V('APP_USER')
)都记录在这里
现在来回答你的问题 * 我能做些什么来解决这个问题?*. Well... debug.使用源创建报告
并检查输出。也许情况不匹配,你需要在方程的一边做上/下来解决这个问题?这取决于你。它是你的数据,你的数据库,由你来修复;)
--更新--
查看报告输出,看起来“demandeur”列具有混合的案例数据。我想这就是问题所在。将where子句更改为: