GRANT动态用户SQL的权限

时间:2017-08-09 08:50:39

标签: sql oracle grant

我提供权限的用户名是可更改的。因此,我想编写一个类似SQL的SQL;

grant ANALYZE ANY DICTIONARY to (select USERNAME from DBA_USERS where DEFAULT_TABLESPACE = 'MCP_DATA');

但是,它会出错。 所有意见和建议将不胜感激。

1 个答案:

答案 0 :(得分:0)

使用EXECUTE IMMEDIATE

DECLARE
  username DBA_USERS.USERNAME%TYPE;
BEGIN
  SELECT USERNAME
  INTO   username
  FROM   DBA_USERS
  WHERE  DEFAULT_TABLESPACE = 'MCP_DATA';

  EXECUTE IMMEDIATE 'GRANT ANALYZE ANY DICTIONARY TO ' || username;
END;
/