如何允许某人运行我的 Oracle 函数/过程但无法查看其源代码

问题描述

我有一个包含函数、存储过程和包的 oracle 数据库模式。我想允许一些开发人员以只读方式访问我的表,因此我创建了一个对我的表具有只读访问权限的用户。我想在我的存储过程和函数上授予他们 EXECUTE 但不允许他们查看其源代码代码)。当我在我的函数或存储过程上授予 EXECUTE 权限时,它们可以轻松地描述(在 sql 开发人员或 TOAD 中)并从 all_source 中查看。我如何阻止他们查看我的 PL/sql代码

解决方法

对于这种类型的访问,我可以看到的一种方法是使用 package

使用您的程序创建包规范和正文,并在您的包上向其他用户grant execute

拥有执行权限,其他用户将能够执行包的过程,并且只能看到包的说明而不是正文(实际代码)