oracle-包

包是一组相关过程、函数变量常和游标等PL/SQL程序设计元素的组合。包类似于C+和JAVA语言中的类,具备面向对象的特点,是对这些pl/sql程序设计元素的封装,包类似于c++或者java语言中的类,其中变量相当于类中的成员变量,过程和函数类似于类中的方法。把相应的模块归类成包,可以使开发人员以面向对象的思想开发存储过程和函数,从而提升系统性能。
与类相同,包中的程序元素也分为公用和私两种元素。区别是他们允许访问程序的范围不同,即作用域不同。公有元素不仅可以被包中的过程、函数范围,还可以被包之外的pl/sql程序访问。而私有元素只能被包中的过程或者函数访问。
包不仅可以使程序模块化,对外隐藏包内信息,而且还可以提高程序的效率。因为当首次访问包中的过程或者函数时,oracle会将整个包加入内存,当再次访问保内元素时,oracle直接从内存读取,无序再做IO磁盘操作,从而提高程序执行效率。

一个包由两分开的部组成:

  • 包定义(package):包定义部分声明包内数据类型、变量、常量,游标、子程序和异错误处理等元素。这些都是公有元素。
  • 包主体(package body):是包定义的部分具体实现。它定义了包定义部分所声明的游标和子程序,在包体中还可以声明私有元素
    包定义和包主体分开编译。并作为两部分分开的对象存储在数据字典中。

建包基本语法

create [or replace] package 包名 is|as
       [公有数据类型定义]
       [公有游标定义]
       [公有变量、常量声明]
       [公有过程、函数声明]
end [包名];

建立包体基本语法

create or replace  package body 包名 is|as
       [私有数据类型定义]
       [私有变量、常量声明]
       [私有过程、函数声明]
       [公有游标定义]
       [公有过程、函数]
       begin
         pl/sql语句
       end;
end [包名];

删除包和包主体

drop package 包名;
drop package body 包名;

你可能感兴趣的:(数据库方面,sql,oracle,包,包主体)