包与子程序(一)-公开课件(讲义).ppt
文本预览下载声明
目标 程序包的优点 模块化 更轻松的应用程序设计 信息隐藏 新增功能 性能更佳 程序包 PL/SQL为了满足程序模块化的需要,除了块(block)和子程序结构外,还引入了包的构造。 程序包是对相关过程、函数、变量、游标和异常等对象的封装 程序包由规范和主体两部分组成 程序包的定义和使用规范 包规范 包主体 包和作用域 重载包中子程序 包的初始化 包和相关性 程序包规范 将相关对象存储在一起的PL/SQL结构。 包含二个分离的部件:包和包体 包的定义形式如下: 包说明: PACKAGE 包名 IS --变量说明; --游标说明; --例外说明; --记录说明; --Plsql表说明; --过程说明; --函数说明; END[包名]; 包体: PACKAGE BODY 包名 IS --变量名说明; --游标说明; --游标申明; --例外说明; --记录说明; --plsql说明; --过程体; --函数体; BEGIN --语句序列 END[包名]; 程序包的规范说明 程序包体说明 程序包定义规则 包部件可以以任意顺序出现 并非所有部件都必须被使用 对函数/事件的声明 必须是前向声明 在编译包主体时先编译包规范说明 包主体也不是必须的 包内定义的函数/过程对外是可见的 包内定义的函数/过程可以被重载 程序包内函数/过程重载说明 二个子程序的参数仅在名字或模式上是不同的,那么不能重载 不能根据反回类型的不同来重载二个函数 程序包的初始化 包第一次调用时被调入内存 可以添加初始化脚本来初始化包 CREATE OR REPLACE PACKAGE BODY… … … BEGIN INITIAL_CODE END; 创建程序包 程序包规范 CREATE [OR REPLACE] PACKAGE package_name IS|AS [Public item declarations] [Subprogram specification] END [package_name]; 程序包主体 CREATE [OR REPLACE] PACKAGE BODY package_name IS|AS [Private item declarations] [Subprogram bodies] [BEGIN Initialization] END [package_name]; 创建程序包 程序包中的游标 游标的定义分为游标规范和游标主体两部分 在包规范中声明游标规范时必须使用 RETURN 子句指定游标的返回类型 RETURN子句指定的数据类型可以是: 用 %ROWTYPE 属性引用表定义的记录类型 程序员定义的记录类型 程序包中的游标 子程序 命名的 PL/SQL 块,编译并存储在数据库中。 子程序的各个部分: 声明部分 可执行部分 异常处理部分(可选) 子程序的分类: 过程 - 执行某些操作 函数 - 执行操作并返回值 子程序 子程序的优点: 模块化 将程序分解为逻辑模块 可重用性 可以被任意数目的程序调用 可维护性 简化维护操作 安全性 通过设置权限,使数据更安全 过程 过程是用于完成特定任务的子程序 例如: 有关子程序和程序包的信息 USER_OBJECTS 视图包含用户创建的子程序和程序包的信息 USER_SOURCE 视图存储子程序和程序包的源代码 小结: 程序包的优点 包的规范与包的主体 子程序的介绍 本课程版权归北风网所有 欢迎访问我们的官方网站 在子程序之外的程序包说明和包体中声明的所有变量、常量和游标被称为是全局的,与特定的过程和函数内部所声明的专用变量、常量和游标不同。 讲师:文心 PL/SQL高级编程 北风网项目培训 包与子程序 理解程序包的概念 掌握程序包的定义和包的规范 声明程序包中公共对象。包括类型、变量、常量、异常、游标规范和子程序规范等 声明程序包私有对象和实现在包规范中声明的子程序和游标 程序包 规范 主体 CREATE OR REPLACE PACKAGE ClassPackage AS PROCEDURE AddStudent(p_StudentID IN students.id%TYPE, p_Department IN classes.department%TYPE, p_Course IN classes.course%TYPE); PROCEDURE R
显示全部