转自: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中参数的。

oracle存储过程学习---包的概念的更多相关文章

  1. Oracle RAC学习笔记:基本概念及入门

    Oracle RAC学习笔记:基本概念及入门 2010年04月19日 10:39 来源:书童的博客 作者:书童 编辑:晓熊 [技术开发 技术文章]    oracle 10g real applica ...

  2. ORACLE存储过程学习

    存储过程 1 CREATE OR REPLACE PROCEDURE 存储过程名 2 IS 3 BEGIN 4 NULL; 5 END; 行1: CREATE OR REPLACE PROCEDURE ...

  3. Oracle 存储过程学习

    转自:http://blog.chinaunix.net/uid-20495387-id-174394.html http://www.cnblogs.com/rootq/articles/11000 ...

  4. Oracle存储过程学习使用

    存储过程创建语法: create or replace procedure 存储过程名(param1 in type,param2 out type) as 变量1 类型(值范围); 变量2 类型(值 ...

  5. Oracle存储过程学习备忘

    之前的项目使用存储过程很少,但在实际的项目中,存储过程的使用是必不可少的. 存储过程是一组为了完成特定功能的SQL 语句 集,经编译后存储在数据库中:存储过程创建后,一次编译在程序中可以多次调用,对安 ...

  6. Oracle 存储过程学习笔记

    1.存储过程简单实例 CREATE OR REPLACE PROCEDURE 存储过程名称 (参数in,参数out) AS -- 变量声明,每个声明用分号结束.可以在声明的同时初始化 name ); ...

  7. oracle 存储过程(包)的写法和执行

    --in 代表输入参数,out 代表输出参数create or replace procedure myproc(id in int, v_message out varchar2) is--定义临时 ...

  8. Oracle存储过程学习笔记

    SQL是一种语言! SQL是一种语言! SQL是一种语言! 个人理解:存储过程就相当于Java中的方法;声明变量区域就相当于java中的声明局部变量一样,只是放到一个指定区域定义了 一.先看一部分基础 ...

  9. Oracle存储过程、包、方法使用总结

    /** *@author:zhengwei *@date:2017-04-28 *@desc:存储过程用法总结 */ CREATE OR REPLACE PROCEDURE MYPROCEDURE(P ...

随机推荐

  1. 解读QML之二

    QML文档 QML文档是用QML语法组成的字符串.一个文档定义了一个QML对象类型.文档以”.qml”最为后缀,可以保存在本地和网络上,可以使用代码生成.一 个在文档中定义的对象类型的实例,也可以使用 ...

  2. java在CMD环境下执行需注意字符集设定

    最近有个小工具需要将DMS系统中随机文件名替换为原始文件名,当导出原始文件名到csv文件中,用小 工具读取然后rename时,发现在eclipse环境下运行正常,简繁中文名称也正常:但放到cmd中执行 ...

  3. 【转】Grub Rescue修复方法

    症状: 开机显示: GRUB loading error:unknow filesystem grub rescue> 原因:已经发现下面几种操作会导致这种问题:1,想删除debian,于是直接 ...

  4. ubuntu设置字体编码GBK和UTF-8

    http://www.xwuxin.com/?p=1155 http://zhidao.baidu.com/link?url=T6m7WDVOM1VBiUctkfkf1qO14lSMLhxg6MIRt ...

  5. 使用Dreamweaver格式化HTML代码

    今天偶然发现了DreamWeaver(DW)的一个非常有用的功能,就是代码的格式化功能.一般情况下,我们写的html或者css代码都计较混乱,难以阅读,即使刚开始很在意代码的可读性,但是等到所使用的标 ...

  6. 树列复选框Extjs

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...

  7. mark一篇文章--用nodejs搭建一个本地反向代理环境

    调试线上代码的时候,我们经常遇到的一个问题就是 本地一套环境,线上一套环境,本地没有的文件用线上的这种需求.我简单来说下使用nodejs如何做到. 先说下不用nodejs我们怎么做,工具比如fiddl ...

  8. 数据恢复软件Extundelete

    数据恢复软件Extundelete介绍 一.概述 作为一名运维人员,保证数据的安全是根本职责,所以在维护系统的时候,要慎重和细心,但是有时也难免发生出现数据被误删除的情况,这个时候该如何快速.有效地恢 ...

  9. 将一个字典内的内value转换为集合:返回一个数组,此数组中包含输入字典的键值对中的数组的所有元素(为NSArray添加category)

    - (NSArray *)testa:(NSDictionary *)dic { NSMutableArray *arr_M = [NSMutableArray array]; // 1.遍历每一个元 ...

  10. jquery 如何动态添加、删除class样式方法介绍_jquery_脚本之家

    获取与设置样式 获取class和设置class都可以使用attr()方法来完成.例如使用attr()方法来获取p元素的class 取与设置样式 获取class和设置class都可以使用attr()方法 ...