来源:博客园
(资料图片)
问题描述:往往有些需求,A用户依赖于B用户创建,A用户想要获取B用户的权限,oracle没找到有命令可以直接继承,只能写一些语句来代替
1.查询用户下的权限有哪些
SET PAGESIZE 100SET LINESIZE 200COLUMN owner FORMAT A20COLUMN table_name FORMAT A30COLUMN privilege FORMAT A30SELECT owner, table_name, privilege FROM DBA_TAB_PRIVS WHERE grantee = "A_user";SELECT owner, table_name, privilege FROM DBA_TAB_PRIVS WHERE grantee = "B_user";
2.利用程序执行体把A_user用户权限授权给B_user
BEGIN FOR priv_rec IN (SELECT * FROM DBA_TAB_PRIVS WHERE grantee = "A_user") LOOP EXECUTE IMMEDIATE "GRANT " || priv_rec.privilege || " ON " || priv_rec.owner || "." || priv_rec.table_name || " TO B_user"; END LOOP;END;/
3.把A_user用户下除了自己本身以外的其他所有权限授权给B_user
BEGIN FOR priv_rec IN (SELECT * FROM DBA_TAB_PRIVS WHERE grantee = "A_user" AND owner != "A_user") LOOP EXECUTE IMMEDIATE "GRANT " || priv_rec.privilege || " ON " || priv_rec.owner || "." || priv_rec.table_name || " TO B_user"; END LOOP;END;/
4.在程序执行的过程中,可能会发生一些权限依赖的视图会编译错误,导致执行失败,可以在程序执行体中加入异常处理
BEGIN FOR priv_rec IN (SELECT * FROM DBA_TAB_PRIVS WHERE grantee = "A_user" AND owner != "A_user") LOOP BEGIN EXECUTE IMMEDIATE "GRANT " || priv_rec.privilege || " ON " || priv_rec.owner || "." || priv_rec.table_name || " TO B_user"; EXCEPTION WHEN OTHERS THEN NULL; -- Ignore the error and continue to the next iteration END; END LOOP;END;/
5.执行完成后,查询B_user与A_user是否有权限关联
SELECT * FROM DBA_TAB_PRIVS WHERE grantee = "B_user" AND owner = "A_user";
关键词:
氯沙坦钾片说明书图片(氯沙坦钾片说明书)-天天讯息
1、氯沙坦钾片的说明书有以下几点: 氯沙坦钾片的性状:50mg为白色
微头条丨什么情况属于挪用公款
一、什么情况属于挪用公款以下情况属于挪用公款:1 国家工作人员利用职
【全球报资讯】如何把二维码变成链接_怎么把二维码变成链接
1、使用工具“二维码生成器”和百度字样,第一个网站就出来了。2、点击
元太创始人卸任:曾称「要做纸的革命」(元太30年关键决策时间线)|当前快报
6月30日消息,据台媒经济日报报道,电子纸龙头企业元太(8069)科技的
村民门口玉米被拔干部上门道歉 当事农户婉拒赔偿_天天报资讯
【村民门口玉米被拔干部上门道歉】近日,有甘肃平凉崇信县网友在人民网
关于我们 加入我们 联系我们 商务合作 粤ICP备2022077823号
创氪网 www.chuanganwang.cn 版权所有 技术支持:广州中创互联网信息服务有限公司
投稿投诉联系邮箱:317 493 128 @qq.com