我如何授予执行语句

How can i grant an execute statment

我想将触发器、功能和过程授予角色。我有代码可以用过程来完成,但是用触发器和函数它不起作用。

create role Level1;
grant execute any trigger to Level1;
grant execute any procedure to Level1;

用户拥有 tables、函数和过程。该用户创建了一个角色,并希望向该角色授予对各种对象的执行权限。

  • 对于触发器,它没有意义 - 它们会在创建它们的 table 上的某些操作上触发。因此,您将授予对 table 的权限,而不是对触发器

    的权限
  • 对于函数和过程,您将授予对确切函数和过程的执行权限(而不是在单个语句中对所有函数和过程授予执行权限),例如

    grant execute on p_insert_student to level1;
    grant execute on f_average_marks  to level1;
    

您发布的(grant execute any procedure)是系统权限;这有点危险;您确定要让 level1 绝对执行数据库中的任何过程吗?

此外,没有单独的功能拨款;在这种情况下,它们被认为是 程序 因此 execute any procedure 也会影响函数。