我想用UserId" MY_SCHEMA"连接到Oracle数据库。然后能够执行表名未使用模式名称限定的查询:
SELECT * FROM TABLE1
执行SQL时,我希望我的非限定查询违反我自己的其他模式。换句话说,我希望这相当于
SELECT * FROM SCHEMA_OTHER.TABLE1
而不是
SELECT * FROM MY_SCHEMA.TABLE1
我知道这看起来有点奇怪,所以我希望这是不可能的。
我对数据库没有任何管理权限,以查看我是否可以将默认架构与登录相关联。
答案 0 :(得分:1)
登录后,您可以运行以下命令:
ALTER SESSION SET CURRENT_SCHEMA=schema_other;
如果您确实希望自动执行此操作,则可以为登录操作创建系统触发器,以查找您的用户名并使用execute immediate
运行alter session
命令:
CREATE OR REPLACE TRIGGER my_schema_logon
AFTER LOGON
ON DATABASE
BEGIN
IF SYS_CONTEXT ('USERENV', 'CURRENT_USER') = 'MY_SCHEMA' THEN
EXECUTE IMMEDIATE 'ALTER SESSION SET CURRENT_SCHEMA=schema_other';
END IF;
END my_schema_logon;
/