zoukankan      html  css  js  c++  java
  • Oracle学习--->9、包

    1、理解PL/SQL包

    • 包 (package)的主要作用是用于逻辑组合相关的PL/SQL类型,比如记录类型或集合类型,PL/SQL游标或游标声明以及PL/SQL子程序,还可以包含任何可以在块的声明区在这种定义的变量
    • 一旦创建包,包就会被存储在Oracle数据库中,可以将包放在共享池中,以便被多个应用程序共享和调用

    2、什么是包

    • PL/SQL由两部分组成
      • 包规范:主要是包的一些定义信息,不包含具体的代码实现部分,也可以说包规范是PL/SQL程序和其他应用程序的接口部分,包含类型、记录、变量、常量、异常定义、游标被子程序声明
      • 包体:包体是对包规范中声明的子程序的实现部分,包体的内容对于外部应用程序来说是不可见的,包体就像一个黑匣子,是对包规范的实现

    3、包的优点

    • 模块化设计:通过将逻辑相关的类型、常量、变量、异常和子程序放到一个命名的PL/SQL模块化中,使得每一个包都容易理解,有助于模块化程序开发
    • 规范化的程序设计:在基于包的应用程序设计时,可以首先规划并在包规范中定义包需要提供的功能,即便当前并没有实现包体,也可以编译包规范部分,然后引用该包的存储子程序会被编译
    • 实现信息的隐藏:包规范中定义的常量、变量和异常及子程序等是公有的,可以被外部访问,可以规划将哪些内容公开给外部进行调用,如果不想对外公开,可以在包体中定义这些内容从而隐藏这些信息
    • 提供全局共享的附加功能:这个功能是指在包中公开的变量或者游标在一定会话期一直存在,并且可以被当前环境下的所有子程序共享,因此可以将包中定义的变量当做全局变量使用
    • 提供良好的性能体验:由于在首次打开包子程序时,整个包都会被加载到内存中,因而后续的调用只需要从内存中读取而不需要再次读取磁盘,提供较好的性能

    4、包规范的定义

    • 创建包的定义使用关键字PACKAGE
    • AUTHID是在创建包是指定包的特权类型,可以是调用者特权(CURRENT_USER)或者是定义者特权(DEFINER),默认是DEFINER
    • type_definition~cursor_declaration是包规范中可以定义的各种类型,比如集合、记录、变量、常量、异常、游标、存储过程和函数等
    • pragma_declaration用来指定包规范中的编译提示
    • 包规范中声明的元素可以以任何顺序出现,但是引用的每个对象都必须先进行声明
    • 任何存储过程和函数的声明都必须是预先声明的,不包含代码,实现包的过程和函数的代码在包体中
    CREATE OR REPLACE PACKAGE package_name
    [AUTHID {CURRENT_USER | DEFINER}]
    {IS | AS}
    type_definition |
    procedure_specification |
    function_specification |
    variable_specification |
    exception_declaration |
    cursor_declaration |
    pragma_declaration 
    END [package_name];
  • 相关阅读:
    Silverlight 5 + Prism 4.1 Demo
    IIS error:The remote server returned an error: NotFound
    使用silverlight4 Business构建企业级应用程序(一)——多语言支持
    ECMA335 (CLI) 标准 读书笔记——总结CLI类型系统(下)
    【转帖】20092010网络最热的 嵌入式学习|ARM|Linux|wince|ucos|经典资料与实例分析
    Binding to Resources in Silverlight/WPF
    [转载]When IIS Wont Start – Error 13
    C#中关键字event 对delegate 对象的影响
    [转载]Sql Server 恢复误删除的windows登录账户
    完整版WPF Browser Application证书制作、发布与自动下载安装
  • 原文地址:https://www.cnblogs.com/LiGengMing/p/6097285.html
Copyright © 2011-2022 走看看