用于切换当前会话的架构(schema)。在进行对象名解析时,如果对象名前没有限定架构名,oracle 会自动在此架构下查询匹配的对象。例如,当 scott 用户执行 select * from emps; 语句时,oracle 默认会查询 scott 架构下的 emps 表;但是,如果 alter session set current_schema=xx; 更改了会话的当前架构,执行此语句时 oracle 会查询 xx 架构下的 emps 表。
通常在一个用户下去访问另一个用户的对象时,需要这样<用户名>.<对象名(如表名)> 但是设置current_schema为另一个的<用户名>后,就不需要再加限定(对象前加用户名)了, 注意:这个只是为了简化访问其它用户的对象,但当前用户并没有改变。你可以使用 select user from daul来查看当前的用户名。
一个列子 没改之前 select * from username.tab运行之后 alter session set current_schema=username select * from tab
但是设置current_schema为另一个的<用户名>后,就不需要再加限定(对象前加用户名)了,
注意:这个只是为了简化访问其它用户的对象,但当前用户并没有改变。你可以使用
select user from daul来查看当前的用户名。
一个列子 没改之前
select * from username.tab运行之后
alter session set current_schema=username
select * from tab
在引用架构下的对象时,需要提供架构作为限定;如果没有提供架构名,则 ORACLE 会自动用当前会话的默认架构名作为限定,在此架构下查找该对象。当前会话的架构默认与当前会话的登陆用户名一致,但是可以通过 CURRENT_SCHEMA 修改此架构名。