【问题标题】:execute procedure having grant statements from BODS执行具有来自 BODS 的授权语句的过程
【发布时间】:2018-12-08 10:16:33
【问题描述】:

我有一个为不同模式中的各种表运行 grant select 语句的过程。我已经使用AUTHID CURRENT_USER 从 SQL Developer 成功执行此操作。

但是当我尝试从BODS designer 执行相同的过程时,它显示了我在从 SQL Developer 执行时使用AUTHID CURRENT_USER 之前遇到的相同错误

OCIStmtExecute 操作的 Oracle DNZ.WORLD 错误消息:
ORA-01749: 你不能授予/撤销权限到/从

那么有没有办法执行一个包含grant 语句的过程,来自 BODS 设计器?

【问题讨论】:

  • 你能发布更多细节吗?您的程序将各种表的选择授予哪个用户?我不知道 BODS Designer 是如何工作的,但是当您使用 AUTHID CURRENT_USER 时,这意味着如果 BODS Designer 使用的架构没有 GRANT 权限,则您无法 GRANT。
  • @Arijit 感谢您的快速回复,但抱歉,我无法发布代码。你能告诉我如何从 BODS 执行授权选择语句,以及用户应该拥有的所有访问权限和角色
  • 您可以发布与您的实际代码完全不同的示例代码。使用表/模式名称,如 Table_A、Table_B 等。在我们为您提供帮助之前,我们需要知道您尝试授予哪个模式。
  • 在模式 A 中创建了一个过程,该过程将选择权限授予模式 B 中的表 B。现在,当我直接在 Schema A 中执行该过程时,它可以工作,但是当我通过 bods 调用它时,它会显示上述错误。

标签: oracle stored-procedures business-objects user-roles grant


【解决方案1】:

这看起来像 BODS Designer 使用的架构没有权限授予对另一个架构对象的选择权限。使用AUTHID CURRENT_USER 会导致Oracle 以可能没有GRANT 选项的BODS Designer 的权限运行该过程。 删除AUTHID CURRENT_USER 将使用定义该过程的模式的权限运行该过程,这应该可以解决问题。

【讨论】:

  • 删除 AUTHID CURRENT_USER 将显示错误,因为架构 A 没有权限将选择授予架构 B 中的表
  • Schema A 是您从 SQL Developer 登录的那个吗?
  • 我正在登录数据库,它有 9 种不同的模式。要访问那里的任何表,我们将其作为 SchemaName.TableName 访问,没有任何问题。仅当从没有 AUTHID 的过程和从 BODS 访问跨模式时,它才会显示错误
  • 对,但您登录的是哪个架构?看起来您正在登录的架构有权授予,但 BODS 架构没有。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-11-29
  • 2022-01-27
  • 2012-10-20
  • 2021-10-15
  • 2016-06-23
  • 2013-12-17
  • 1970-01-01
相关资源
最近更新 更多