IvorySQL 4.0 之兼容 Oracle 包功能设计思路解读
日前,IvorySQL 4.0 发布,该版本新增了兼容 Oracle 包功能的新特性。
为了大家能够更好地理解和使用 IvorySQL 4.0,本文将简要介绍实现此功能时的设计思路。
Oracle 的包是什么?
包是包含了逻辑上相关的 PL/SQL 类型、变量、常量、子过程、游标和异常的一个模式对象。包被编译并存储在数据库中,多个应用可以共享包的内容。
包总是有一个包规范,包规范中声明了公有对象,这些公有对象可以在包外被引用。
如果公有对象中包含了游标或子过程,则包必须有一个包体。包体必须定义公有游标和公有子过程的代码。包体也可以声明并定义私有对象,私有对象不能在包外被引用,但可用于包内使用。最后,包体可以有一个初始化部分,这部分用于初始化变量,做一些一次性的设置步骤和异常处理。修改包体的时候,可以不修改包规范或引用包的公有对象的数据库对象,因此可以认为包体是一个黑盒。
