繁体   English   中英

Oracle SQL Developer-使用脚本创建函数

[英]Oracle SQL Developer - Create Function Using Script

[说明]
如果我想创建一个属于模式'A'的函数,据我了解,我需要在模式'A'中创建包并实现功能。 (如果还有其他方法,请纠正我)。
如果我尝试使用脚本文件创建函数(例如,New Gallery-> SQL Files(数据库文件)以创建untitled.sql) ,我会感到困惑,因为该函数不属于任何模式,并且将存储在全球。

[题]
1)如何使用脚本创建属于模式“ A”的功能?
2)全局存储的函数无法访问架构表,该如何解决?

在此处输入图片说明

我完全同意Ascalonian。 为了您的问题,我将提供有关如何使用SQL Developer的GUI工具创建函数的说明,这将生成一个脚本。

在许多方面,我宁愿使用SQL * Plus。 就我的示例而言,我将使用标准的Oracle示例模式SCOTT。

问题1:如何使用脚本创建函数

注意:我展示了如何使用SQL Developer中的GUI工具创建此功能,并且它们会生成脚本

如果您已登录数据库用户SCOTT,只需右键单击用户SCOTT的功能,然后选择“新功能”

在此处输入图片说明

“创建功能”对话框将打开。 在此处输入图片说明

您只需修改名称即可与您的命名约定和项目相对应。 选择您的选项,然后选择确定。 接下来,在代码编辑器中,进一步修改函数以满足您的需求: 在此处输入图片说明

这是我的最终草案。 选择“编译”: 在此处输入图片说明

现在,它显示并显示为SCOTT拥有的功能对象。 GUI工具会生成脚本功能,而不会限制SCOTT的所有权。 如果没有资格,则默认情况下该功能由SCOTT拥有。

在此处输入图片说明

如果我在以SCOTT登录的SQL Developer工作表中调用此函数,我们将在这里看到它: 在此处输入图片说明

通常,如果要与所有用户共享对象,则标准方法是将execute授予public或创建public同义词。 这是向公众授予执行的示例:

在此处输入图片说明

然后,您可以与其他用户一起检查您的特权:

在此处输入图片说明

通常,使用此GUI工具很好,并且可以帮助您获得正确的语法。 一段时间后,您可能会放弃此操作(相当缓慢且麻烦)。

问题2:全局存储的函数无法访问架构表,该如何解决?

有很多方法可以解决如何授予表上的选择访问权限。

以我的示例为例,可以将表上的选择授予功能所有者SCOTT。

您可以这样做:

GRANT SELECT ON OTHER_SCHEMA.PRECIOUS_TABLE TO SCOTT;

另一种常见的方法可能是将系统特权SELECT ANY TABLE授予SCOTT。 当然,应始终考虑安全性,并应遵循授予最少特权来完成任务的原则。

您不需要使用包来创建函数。 函数可以是独立对象。

通过阅读有关如何创建函数的Oracle文档 ,可以找到用于创建函数的脚本。

要在特定架构中创建它,只需将架构名称添加到函数名称中,或以该其他用户身份登录。

注意:如果要在另一个架构中创建函数,则需要具有CREATE ANY PROCEDURE特权。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM