如何知道 oracle GRANT 命令是否真的改变了什么

问题描述 投票:0回答:0

在 Oracle SQL 脚本中运行

grant
命令,有什么方法可以判断它是否真的改变了什么。相当于
SQL%ROWCOUNT
或类似的东西?

我正在编写一个 ansible 模块来管理授权(在内部使用 SQLPlus 来运行命令)。如果它改变了任何东西或者它是否已经正常,那么能够准确地报告会很好。我想我可以先做一堆选择,但然后我必须将每个授权(涉及不同类型的授权,包括从 sys 到模式所有者的授权)映射到一个选择。

我想做的是像

declare
  vNum number := 0;

  procedure do_grant(vGrant in varchar2) is
  begin
    execute immediate 'grant ' || vGrant || ' to myrole';
    if SQL%CHANGED > 0 then
      vNum := vNum + 1;
    end if;
  end do_grant;
begin
  do_grant('select on foo');
  do_grant('select on bar');
  do_grant('execute on baz');

  dbms_output(vNum);
end;
/

(这是简化的伪代码,没有错误处理等,为了简单起见,但我捕获了输出并基于此将状态更新为 ansible。)

sql oracle sqlplus sql-grant
© www.soinside.com 2019 - 2024. All rights reserved.