DROP USER "用户名";
CREATE USER "用户名" PROFILE "DEFAULT"
IDENTIFIED BY "密码" ACCOUNT UNLOCK;
DECLARE
V_SQL VARCHAR2(1000);
BEGIN
FOR OBJ_INFO IN (SELECT T1.IS_TABLE, T1.OWNER, T1.OBJ_NAME, T2.USER_NAME
FROM (SELECT 1 AS IS_TABLE,
USER AS OWNER,
TABLE_NAME AS OBJ_NAME
FROM USER_TABLES
UNION ALL
SELECT 0 AS IS_TABLE,
USER AS OWNER,
VIEW_NAME AS OBJ_NAME
FROM USER_VIEWS) T1,
(SELECT '用户名' AS USER_NAME
FROM DUAL
) T2
WHERE T1.OWNER <> T2.USER_NAME
ORDER BY T1.IS_TABLE DESC, T1.OBJ_NAME, T2.USER_NAME) LOOP
SELECT 'grant select'||
DECODE(OBJ_INFO.IS_TABLE, 1,
', insert, update, delete, index, alter ', ' ') || ' on ' ||
OBJ_INFO.OWNER || '.' || OBJ_INFO.OBJ_NAME || ' to ' ||
OBJ_INFO.USER_NAME || ' with grant option'
INTO V_SQL
FROM DUAL;
BEGIN
EXECUTE IMMEDIATE V_SQL;
EXCEPTION
WHEN OTHERS THEN
---用户或角色不存在,不打印错误信息
IF SQLCODE NOT IN (-1917,-1918,-1919) THEN
DBMS_OUTPUT.PUT_LINE(V_SQL || ';');
END IF;
END;
END LOOP;
END;
本站文章除注明转载/出处外,均为本站原创,转载前请务必署名,转载请标明出处 最后编辑时间为: 2021/10/28 15:46:00