我们正在使用PL / SQL中的Packages,我想知道我们是否可以以类似的方式工作。例如,Java,您可以在其中创建一个Package到另一个类似目录。例如:
myapplication.account.balance
因此,我们可以使用具有相同名称但位于不同子包中的包。
答案 0 :(得分:5)
没有“嵌套包”这样的东西。
拥有“嵌套包”的一种方法是引入自己的包分隔符,如$
。但话说回来,你已经达到了30个字符的限制,它适用于任何类型的对象名称,非常快。
我的建议是不要尝试在Oracle中模拟“嵌套包”。只需坚持使用扁平包,给它们正确的名称,也许,只是给它们一个像PAC_
这样的前缀,以避免与其他对象冲突,因为 Oracle不会将对象类型分隔成名称空间一些包和表之类的对象类型共享相同的命名空间(有关详细信息,请参阅Database Object Names and Qualifiers)。
答案 1 :(得分:1)
您可以将包裹放在不同的production_department
中。它不是真正的嵌套软件包,但如果您想使用具有相同名称的不同软件包,它可以帮助您。
例如,您可以创建两个架构accountant_service
和calc_salary()
。在每个模式中,您可以创建具有相同名称的包research_department.accountant_service.calc_salary()
我们可以在每个包中创建程序production_department.accountant_service.calc_salary()
。
然后您可以使用模式名称调用过程:
accountant_service.calc_salary()
calc_salary()
或者您只能使用包和程序名称:p4 diff -sa // to show list of all opened files
p4 diff -se // to show list of all files that are with changes but not opened
。在这种情况下,将从当前架构执行过程
或者您只能使用过程名称(内部包):
MemoryStream ms = new MemoryStream(imgBytes, true);
ms.Position = 0;
Bitmap img = new Bitmap(ms);
。在这种情况下,将从当前包执行程序。
答案 2 :(得分:0)
在我们公司,我们使用不同的架构,前缀和后缀。 我们有100多个套餐,效果非常好。
e.g。 myappl1.acnt_balance