【问题标题】:How can i grant an execute statment如何授予执行语句
【发布时间】:2022-01-27 02:59:48
【问题描述】:

我想将触发器、函数和程序授予角色。我有代码用过程来做,但是用触发器和函数它不起作用。

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

【问题讨论】:

    标签: sql oracle oracle-sqldeveloper


    【解决方案1】:

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

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

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

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

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

    此外,函数没有单独的授权;在这种情况下,它们被视为过程,因此execute any procedure 也会影响函数。

    【讨论】:

    • 是的,这是对大学的测试,但我如何才能获得特权来为不针对用户的角色执行任何表的触发器
    • 我告诉过你 - 没有执行触发器的权限。您将授予 table 的权限。
    • 具体来说,您将授予对表的插入、更新或删除权限。执行触发器的唯一方法是修改表中的数据,使其导致(“触发器”)触发器自动执行。
    猜你喜欢
    • 2021-10-15
    • 2011-06-02
    • 1970-01-01
    • 1970-01-01
    • 2014-10-06
    • 2011-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多