And*_*nez 14 oracle plsql oracle10g oracle11g
在Oracle数据库中,以下内容之间存在以下差异:
这些也可能是"当前用户"的相关值吗?
我特别感兴趣的是哪些可以更改,哪些可以更改它们,哪些不能更改值,哪些具有基于连接类型的不同值,以及哪些(始终)是用于登录到数据库.
在我的大多数测试中,值总是相同的.唯一的例外是运行以下内容以更改'CURRENT_SCHEMA'时:
alter session set current_schema=<SCHEMA>
Run Code Online (Sandbox Code Playgroud)
执行以下操作会导致错误:
alter session set current_user=<USER> --even as sys/system, which is good I suppose
Run Code Online (Sandbox Code Playgroud)
因此,所有这些都有某种安全/规则.但是,拥有SESSION_USER和CURRENT_USER背后一定有一些原因.我还假设user()可以是sys_context的快捷方式('USERENV','CURRENT_USER'),但我找不到有关此问题的文档.
a_h*_*ame 15
来自手册:http://docs.oracle.com/cd/E11882_01/server.112/e26088/functions184.htm#SQLRF51825
权限当前处于活动状态的数据库用户的名称.这可能会在会话期间发生变化,以反映任何活动定义者权限对象的所有者.当没有定义者的权限对象处于活动状态时,CURRENT_USER返回与SESSION_USER相同的值.当直接在视图定义的主体中使用时,这将返回正在执行使用视图的游标的用户; 它不会将游标中使用的视图视为定义者的权限.
登录时数据库用户的名称.对于企业用户,返回架构.对于其他用户,返回数据库用户名.该值在整个会话期间保持不变.
所以是特别是当在CURRENT_USER存储过程或功能用于SESSION_USER和CURRENT_USER之间的差.
我不得不承认我不知道"企业用户"这个词的意思.
顺便问一下:还有第三个:
登录时数据库用户的标识符.