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

Adr*_*ian 1 sql oracle plsql oracle-sqldeveloper

[解释]
如果我想创建一个属于模式'A'的函数,我的理解是我需要在模式'A'中创建包,并实现函数.(如果还有其他办法,请纠正我).
如果我试图使用脚本文件创建一个函数(例如.新图库 - > SQL文件(数据库文件)来创建untitled.sql),我会感到困惑,因为该函数不属于任何模式,它将被存储在全球.

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

在此输入图像描述

Pat*_*con 5

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

在很多方面,我宁愿使用SQL*Plus.为了我的例子,我将使用标准的Oracle示例模式SCOTT.

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

注意:我将展示如何使用SQL Developer中的GUI工具创建此函数,并生成脚本

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

在此输入图像描述

将打开"创建函数"对话框. 在此输入图像描述

您只需修改名称以符合您的命名约定和项目.选择您的选项,然后选择确定.接下来在代码编辑器中,更多地修改函数以满足您的需求: 在此输入图像描述

这是我的最终草案.选择"编译": 在此输入图像描述

现在它显示并显示为SCOTT拥有的功能对象.GUI工具生成脚本函数而不限定SCOTT的所有权.如果没有符合条件,则默认情况下该函数由SCOTT拥有.:

在此输入图像描述

如果我在以SCOTT身份登录的SQL Developer工作表中调用此函数,我们在此处看到它: 在此输入图像描述

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

在此输入图像描述

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

在此输入图像描述

通常,使用此GUI工具很不错,可以帮助您获得正确的语法.过了一段时间,你可能会放弃这个(相当缓慢和麻烦).

问题2:存储在全局的函数无法访问模式表,我该如何解决?

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

在我的示例中,可以将表上的select授予函数所有者SCOTT.

你可以这样做:

GRANT SELECT ON OTHER_SCHEMA.PRECIOUS_TABLE TO SCOTT;

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