使用动态用户子查询授予执行开启

时间:2017-02-26 12:31:51

标签: sql oracle plsql

我在ABC用户的XXX类型上执行了grant选项,但是成功地使用了query-1

query-1:

GRANT EXECUTE ON XXX TO ABC WITH GRANT OPTION;

我成功使用query-2获取了当前用户

query-2:

select user from dual;

现在我想动态地与用户一起执行query-1。我试图将用户存储在变量中Say user_name [表示user_name =从双重中选择用户;]

执行查询1,如---

GRANT EXECUTE ON XXX TO user_name WITH GRANT OPTION;

我也试过

GRANT EXECUTE ON XXX TO (select user from dual) WITH GRANT OPTION;

但编译失败。

请帮我解决这个问题。

由于

1 个答案:

答案 0 :(得分:0)

您可以在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;