Sql 使用动态用户子查询授予在上执行权限

Sql 使用动态用户子查询授予在上执行权限,sql,oracle,plsql,Sql,Oracle,Plsql,我使用query-1成功地对ABC用户的XXX类型执行了授予选项 查询-1: GRANT EXECUTE ON XXX TO ABC WITH GRANT OPTION; 我使用query-2成功获取了当前用户 查询-2: select user from dual; 现在我想对用户动态执行query-1,所以我尝试将用户存储在一个变量中,比如user\u name[意味着user\u name=从dual中选择user;] 然后执行查询1--- 我也试过了 GRANT EXECUTE ON

我使用query-1成功地对ABC用户的XXX类型执行了授予选项

查询-1:

GRANT EXECUTE ON XXX TO ABC WITH GRANT OPTION;
我使用query-2成功获取了当前用户

查询-2:

select user from dual;
现在我想对用户动态执行query-1,所以我尝试将用户存储在一个变量中,比如user\u name[意味着user\u name=从dual中选择user;]

然后执行查询1---

我也试过了

GRANT EXECUTE ON XXX TO (select user from dual) WITH GRANT OPTION;
但编译失败了

请帮我解决这个问题


谢谢

您可以在
PLSQL
块中以这种方式使用它:

declare
     user_name                     varchar2 (100);
     v_sql                         varchar2 (100);
begin
     select 'HR'
       into user_name
       from dual;

     v_sql := 'GRANT EXECUTE ON get_values TO  '||user_name||'  WITH GRANT OPTION';

     execute immediate v_sql;
end;
declare
     user_name                     varchar2 (100);
     v_sql                         varchar2 (100);
begin
     select 'HR'
       into user_name
       from dual;

     v_sql := 'GRANT EXECUTE ON get_values TO  '||user_name||'  WITH GRANT OPTION';

     execute immediate v_sql;
end;