在Oracle模式上授予用户所有权限
发布时间:2021-02-05 02:38:13 所属栏目:站长百科 来源:网络整理
导读:有没有办法在Oracle模式上为用户授予所有权限?我尝试了以下命令,但它只授予模式中特定表的权限.我想要的是为该用户授予给定模式的所有权限. GRANT ALL ON MyTable TO MyUser; 解决方法 您可以在循环中执行此操作并通过动态SQL进行授予: BEGIN FOR objects
有没有办法在Oracle模式上为用户授予所有权限?我尝试了以下命令,但它只授予模式中特定表的权限.我想要的是为该用户授予给定模式的所有权限. GRANT ALL ON MyTable TO MyUser; 解决方法您可以在循环中执行此操作并通过动态SQL进行授予:BEGIN FOR objects IN ( SELECT 'GRANT ALL ON "'||owner||'"."'||object_name||'" TO MyUser' grantSQL FROM all_objects WHERE owner = 'MY_SCHEMA' AND object_type NOT IN ( --Ungrantable objects. Your schema may have more. 'SYNONYM','INDEX','INDEX PARTITION','DATABASE LINK','LOB','TABLE PARTITION','TRIGGER' ) ORDER BY object_type,object_name ) LOOP BEGIN EXECUTE IMMEDIATE objects.grantSQL; EXCEPTION WHEN OTHERS THEN --Ignore ORA-04063: view "X.Y" has errors. --(You could potentially workaround this by creating an empty view,-- granting access to it,and then recreat the original view.) IF SQLCODE IN (-4063) THEN NULL; --Raise exception along with the statement that failed. ELSE raise_application_error(-20000,'Problem with this statement: ' || objects.grantSQL || CHR(10) || SQLERRM); END IF; END; END LOOP; END; / (编辑:瑞安网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |