相关疑难解决方法(0)

USER()和SYS_CONTEXT('USERENV','CURRENT_USER')有什么区别?

在Oracle数据库中,以下内容之间存在以下差异:

  • 用户()
  • sys_context('USERENV','CURRENT_USER')
  • sys_context('USERENV','SESSION_USER')

这些也可能是"当前用户"的相关值吗?

  • sys_context('USERENV','CURRENT_SCHEMA')
  • sys_context('USERENV','AUTHENTICATED_IDENTITY')

我特别感兴趣的是哪些可以更改,哪些可以更改它们,哪些不能更改值,哪些具有基于连接类型的不同值,以及哪些(始终)是用于登录到数据库.

在我的大多数测试中,值总是相同的.唯一的例外是运行以下内容以更改'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'),但我找不到有关此问题的文档.

oracle plsql oracle10g oracle11g

14
推荐指数
1
解决办法
4万
查看次数

标签 统计

oracle ×1

oracle10g ×1

oracle11g ×1

plsql ×1