创建只能看到过程标题的 Oracle 用户

发布于 2024-11-08 18:56:23 字数 78 浏览 4 评论 0原文

我需要做的是创建 oracle 用户,它将只看到过程和函数头,而没有主体。

知道我如何才能实现这一目标,应该设置什么样的权限?

What I need to do is to create oracle user which will see only procedures and functions headers, without bodies.

Any idea how I can achieve that, what kind of privileges should be set?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

风流物 2024-11-15 18:56:23

使用 DBA 帐户创建视图并在此视图上授予 SELECT 权限应该可以工作:

CREATE VIEW dba_source_pkg_headers AS
SELECT *
  FROM dba_source
 WHERE type = 'PACKAGE';

GRANT select ON dba_source_pkg_headers TO your_user;

更新:这不适用于未打包的函数和过程。我认为您无法使用常规函数/过程将标头和正文分开。

如果您使用常规函数和过程,则可以授予对dba_arguments的选择,这将使您能够访问所有函数/过程参数。

Creating a view with a DBA account and granting SELECT on this view should work:

CREATE VIEW dba_source_pkg_headers AS
SELECT *
  FROM dba_source
 WHERE type = 'PACKAGE';

GRANT select ON dba_source_pkg_headers TO your_user;

update: this would not work with unpackaged functions and procedures. I don't think you can separate header and body with regular functions/procedures.

If you use regular functions and procedures, you could grant select on dba_arguments, this would give you access to all function/procedure parameters.

屋顶上的小猫咪 2024-11-15 18:56:23

我不确定这是否可能。作为解决方法,您可以在用户有权访问的模式中创建“外观”过程,然后将工作委托给用户无权访问的另一个模式中的过程。但这是对数据库设计的相当侵入性的修改。

I'm not sure if this is even possible. As a workaround, you could create "facade" procedures in a schema that your user has access to, and then delegate the work to procedures in another schema, that your user has no access to. But that's a quite intrusive modification in your database design.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文