gpt4 book ai didi

Oracle:根据角色更改架构

转载 作者:行者123 更新时间:2023-12-01 15:49:58 24 4
gpt4 key购买 nike

this post描述了设置触发器以在登录时更改模式。有没有办法检查用户的角色以查看它是否匹配特定角色而不是用户名本身?

我试图在 when 子句中对 user_role_privs 进行子查询,但它不允许这样做。想法?

更新

这是我根据 Yahia 建议的解决方案使用的。它似乎没有工作。当我使用具有该角色的用户登录时,它仍然无法识别前面没有架构名称的表。

CREATE OR REPLACE TRIGGER db_logon
AFTER logon ON DATABASE
DECLARE
v_count NUMBER;
BEGIN
SELECT COUNT(*) INTO v_count FROM user_role_privs WHERE granted_role = 'USER_ROLE' and username <> 'DEFAULT_SCHEMA';
IF v_count > 0 THEN
execute immediate 'ALTER SESSION SET CURRENT_SCHEMA = DEFAULT_SCHEMA';
END IF;
END;

最佳答案

是的 - 放弃 WHEN 部分并在触发器内动态构建 SQL 字符串:

CREATE OR REPLACE TRIGGER db_logon
AFTER logon ON DATABASE

使用 SELECTUSER_ROLE_PRIVS并从 ROLE 中映射您想要的任何内容到 SCHEMA .

然后为 EXECUTE IMMEDIATE 构建一个 SQL 字符串包括映射的 SCHEMA .

关于Oracle:根据角色更改架构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7616366/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com