zoukankan      html  css  js  c++  java
  • oracle包头包体

    补充说明:包头和包体可以以java的接口来理解,包头像java的接口,包体像java接口的实现类。

    一 包的组成

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

    二  包的语法规则

    包头的语法如下:


     
    1. create or replace package 包名  
    2. As | IS  
    3.           procedure 过程名();  
    4.           Function 函数名() return 数据类型;  
    5.            变量定义;  
    6.           异常定义;  
    7.           光标定义;  
    8.           ...........  
    9.           ...........  
    10. End 包名;  


    包体创建的语法:


      1. create or replace Package Body 包名  
      2. As | IS  
      3.             Procedure 过程定义;  
      4.             Procedure 过程定义;  
      5.              Function 函数定义;  
      6.             Function 函数定义;  
      7.                 .........;  
      8.   
      9. end 包名;  

    例子:

    --包头

    create or replace package pk1
    is
    function f1 (fno number) return number;
    procedure p1 (pno number);
    end pk1;

    --包体
    create or replace package body pk1
    is
    function f1(fno in number) return number
    is
    begin
    if fno>1 then return 1;
    else return 3;
    end if;
    end f1;

    procedure p1(pno in number)
    is
    begin
    BEGIN
    UPDATE emp
    SET sal = sal +1
    WHERE empno = pno;
    commit;
    end;
    end p1;
    end pk1;

    1)        在设计一个应用程序,只创建各编译程序包的说明部分,然后再编写引用该程序包的PL/SQL块。

    2)        当完成整个应用程序的整体框架后,再回头来定义包体部分。只要不改变包的说明部分,就可以单独调试、增加或替换包体的内容,这不会影响其他的应用程序。

    3)        更新包的说明后必须重新编译引用包的应用程序,但更新包体,则不需重新编译引用包的应用程序,以快速进行应用程序的原形开发。

    第二   模块化:可将逻辑相关的PL/SQL块或元素等组织在一起,用名称来唯一标识程序包。把一个大的功能模块划分人适当个数小的功能模块,分别完成各自的功能。这样组织的程序包都易于编写,易于理解更易于管理。

    第三     效率高:程序包在应用程序第一次调用程序包中的某个元素时,Oracle将把整个程序包加载到内存中,当再次访问程序包中的元素时,将直接从内在中读取,而不需要进行磁盘I/O操作而影响速度,同时位于内在中的程序包可被同一会话期间的其它应用程序共享。因此,程序包增加了重用性并改善了多用户、多应用程序环境的效率。
    最后   还有提到一点: 信息隐藏。因为包中的元素可以分为公有元素和私有元素。公有元素可被程序包内的过程、函数等的访问,还可以被包外的PL/SQL访问。但对于私有元素只能被包内的过程、函数等访问。对于用户,只需知道包的说明,不用了解包休的具体细节。

  • 相关阅读:
    使用VGG16完成猫狗分类
    11.绘制网络结构
    11.模型载入
    session与cookie的区别---
    zookeeper 笔记
    53. Maximum Subarray
    !!!!!122. Best Time to Buy and Sell Stock II
    121. Best Time to Buy and Sell Stock
    235. Lowest Common Ancestor of a Binary Search Tree
    128. Longest Consecutive Sequence
  • 原文地址:https://www.cnblogs.com/steel-chen/p/6889239.html
Copyright © 2011-2022 走看看