zoukankan      html  css  js  c++  java
  • oracle存储过程学习---包的概念

    转自:http://www.iteye.com/topic/1111793

    一、包的概念
       类似于一个容器,能打包相应的Pl/SQL变量、常量、函数、过程、复合数据类型等元素到这个容器内。用来限制
       对这些内容的访问权限。
    二、包的构成。
       包通常由两部分组成,分别为包头和包体 。
       包头:里面通常写上述元素的声明,相当于应用程序的接口。
       包体:里面通常写上述元素的实现,相当于应用程序的具体实现。 
       包头和包体分别作为数据库对象被保存在数据库内。
    三、包的特性
      1、包本身不能被调用,被参数化,只能调用包中的具体元素。
      2、当第一次调用一个包中的元素时,整个包被载入内存,下一次再调用包中的相应元素时,省略了磁盘操作。
      3、用户只能访问包头,而不能访问包体。
      4、包头可以在没有包体的情况下单独存在,而包体不可以。
    四、公有元素、私有元素和局部元素。  
       公有元素:只要在包头中声明的元素,即为公有元素,在包的外部都可以访问得到。
       私有元素:在包体中出现而包头中没有出现的元素,即为私有元素,在包的外部访问不到。
       局部元素:在包体的某一个过程或者函数中声明的元素,即为局部元素,只能在包体的这个过程和函数中使用。
    五、如何编辑一个包。
      1、new Sql-window
      2、new program-window ->Package
      3、new command-window
    六、创建包的语法
      1、创建包头:
       Create Or Replace Package 包名 is|As 
               公有元素的声明;
        pl/sql块
      2、创建包体:
        Create Or Replace Package Body 包名 is|As 
               私有元素的声明
               公有元素的实现;
         pl/sql块
    七、包的调用
        和以前调用方式的区别是:在调用的元素名前面加上  '包名.'   
    八、包的特性:
      1、无体包:只有包头没有包体的包。通常只写常量的声明。   
      2、包的重载特性:在同一个包里,函数或过程名相同,参数列表不同。
      3、包的前向声明:
    九、删除包
      删除包头:
      Drop Package 包名;--包头和包体都被删除
      删除包体
      Drop Package Body 包名; --只删除包体。
      当修改包头时,包头和包体需要全部重新编译,如果只修改包体,包头不需要重新编译。   
    十、动态SQL:在运行期间才能明确下来操作的是哪个数据库对象.
        静态SQL:在编译之前就已经明确操作的是哪个数据库对象。
    十一、本地动态SQL:
        Execute Immediate '动态SQL' [Into 变量列表] [Using 参数列表];
        变量列表:用来做Select语句赋值的。、
        参数列表:用来填充SQL中参数的。

  • 相关阅读:
    关于Hibernate(JPA)关联关系加载的默认值
    (转)存储过程语法及实例
    网页qq
    git的代理配置
    The problem with POSIX semaphores 使用信号做进程互斥必看
    git merge conflict的处理
    转载:telnet协议详细描述
    Mac OS X terminal滚动慢的问题
    进程间通讯 信号量函数 semget() semop() semctl()
    .hpp文件和.h文件的区别
  • 原文地址:https://www.cnblogs.com/luoyanli/p/3225979.html
Copyright © 2011-2022 走看看