为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:DM6
【操作系统】:凝思
【CPU】:
【问题描述】*:权限问题
想给一次一个模式下多张表(大概几百张)赋select权限,表名类似YC_HS_XXXXXX(六个数字),语句应该怎么写啊?谢谢
SELECT ‘grant select on ‘||OWNER||’.’||TABLE_NAME||’ TO USER2’
FROM DBA_TABLES
WHERE OWNER=‘USER1’ AND TABLE_NAME LIKE ‘T%’;
先查询出授权语句,然后执行。
可以创建一个存储过程来进行调用,写上对应的模式,用户,操作类型即可。
CREATE PROCEDURE GRANT_ROLE_QUANXIAN(READ_SCHEMA VARCHAR(128), ROLE_NAME VARCHAR(128), TYPE_NAME VARCHAR(128)) AS
DECLARE
SQL_TEXT VARCHAR(30000);
TAB_NAME VARCHAR(128);
V_CUR CURSOR;
BEGIN
OPEN V_CUR FOR SELECT TABLE_NAME FROM DBA_TABLES WHERE OWNER= READ_SCHEMA;
LOOP
FETCH V_CUR INTO TAB_NAME;
EXIT WHEN V_CUR%NOTFOUND;
SQL_TEXT = 'GRANT ’ || TYPE_NAME || ’ ON '|| READ_SCHEMA || ‘."’ ||TAB_NAME|| '" TO ’ || ROLE_NAME;
EXECUTE IMMEDIATE SQL_TEXT;
END LOOP;
CLOSE V_CUR;
END;