Oracle中的重载

Oracle中的重载,oracle,Oracle,请帮我回答下面的面试问题 问:为什么在oracle中不能重载独立子程序。在oracle中只能重载包子程序/本地子程序 问候 Srikanta Parida因为存储过程/函数名是唯一的。 请参阅Oracle文档: 命名程序和功能 由于过程或函数存储在数据库中,因此必须 命名的。这使它区别于其他存储过程,并使其 应用程序可以调用它。每个公开可见的程序 架构中的or函数必须具有唯一名称,且名称必须为 合法的PL/SQL标识符 因为存储过程/函数名是唯一的。 请参阅Oracle文档: 命名程序和功能 由

请帮我回答下面的面试问题

问:为什么在oracle中不能重载独立子程序。在oracle中只能重载包子程序/本地子程序

问候
Srikanta Parida

因为存储过程/函数名是唯一的。 请参阅Oracle文档:

命名程序和功能

由于过程或函数存储在数据库中,因此必须 命名的。这使它区别于其他存储过程,并使其 应用程序可以调用它。每个公开可见的程序 架构中的or函数必须具有唯一名称,且名称必须为 合法的PL/SQL标识符


因为存储过程/函数名是唯一的。 请参阅Oracle文档:

命名程序和功能

由于过程或函数存储在数据库中,因此必须 命名的。这使它区别于其他存储过程,并使其 应用程序可以调用它。每个公开可见的程序 架构中的or函数必须具有唯一名称,且名称必须为 合法的PL/SQL标识符


简短的回答是-因为文档中说独立子程序不能重载:

过载限制

只能使用本地或打包子程序或类型方法 超载。不能重载独立子程序


为什么??您需要询问Oracle为什么以这种方式实施它


我的猜测是,每个独立子程序都被视为一个数据库对象(您可以在所有对象或用户对象视图中找到它们,它们的类型是:过程和函数),并且每个数据库对象必须具有唯一的名称,因此,您不能使用相同的名称创建两个函数或过程。

一个简短的答案是-因为文档中说独立子程序不能重载:

过载限制

只能使用本地或打包子程序或类型方法 超载。不能重载独立子程序


为什么??您需要询问Oracle为什么以这种方式实施它


我的猜测是,每个独立子程序都被视为一个数据库对象(您可以在所有对象或用户对象视图中找到它们,它们的类型是:过程和函数),并且每个数据库对象必须具有唯一的名称,因此,不能使用相同的名称创建两个函数或过程。

独立的过程/函数是通过类型和名称组合标识的模式对象

你可以说这是一个任意的设计决定。但是,与数据字典中更简单的对象标识符相比,重载函数和过程的好处很小,尤其是没有到处都是空组件

Imho,出于软件工程最佳实践(如关注点分离、数据封装、可维护性)的原因,需要重载例程的应用程序无论如何都应该利用包范式

注意:
模式类型提供了定义重载方法的另一个选项。

独立过程/函数是通过类型和名称组合标识的模式对象

你可以说这是一个任意的设计决定。但是,与数据字典中更简单的对象标识符相比,重载函数和过程的好处很小,尤其是没有到处都是空组件

Imho,出于软件工程最佳实践(如关注点分离、数据封装、可维护性)的原因,需要重载例程的应用程序无论如何都应该利用包范式

注意: 模式类型提供了定义重载方法的另一个选项