PLSQL是Oracle的关系型数据库过程性编程语言,用它可以开发复杂的、功能强大的程序,以访问和操纵Oraclest数据库中的数据。 PLSQL是几种 Oracle产品(包括 Developer/2000和 Oracle8i数据库本身)的核心。\r\n\r\n 本书以1天讲解1章课程的形式,引导读者大约用3周的时间学会使用PL/SQL语言,并掌握PL/SQL编程技巧。为了便于读者深入理解书中介绍的内容,每章都提供了大量范例以及供读者练习的习题和测验。\r\n\r\n 第 1周课程中,主要介绍 PL/SQL语言的基本知识,内容包括PL/SQL简介;编写声明和块;编写PL/SQL表达式;使用各种函数和 PL/SQL语句;使用 Oracle内置函数;过程、包和错误处理例程。第2周课程介绍一些更高级的功能以及如何结合数据库使用PL/SQL,此外还将探讨一些Oraclest的面向对象功能。本周内容\r\n\r\n包括游标处理技术、集合、触发器、复合数据库结构、调试处理技术和大型数据对象建立 PL/SQL程序等。在第 3周课程中介绍 Oracle内置的包,内容包括事务管理和锁定、动态SQL、Java引擎和高级排队技术。阅读完本书后,读者可以开发自己的PL/SQL程序,并知道如何将这些程序存储在数据库中,并执行它们。\r\n\r\n 本书是为初级程序员和中级程序员编写的,但对经验更为丰富的程序员也会有所帮助。本书可以让初学者很快便能开始开发PL/SQL应用程序,对于数据库编程人员以及大专院校计算机专业师生也很有参考价值。\r\n
\r\n
第1部分 第1周课程 \r\n\r\n 第1章 第1天课程:学习PUSQL基础知识 \r\n\r\n 1. 1 PLSQL是什么 \r\n\r\n 1. 2 为什么要学习 PIJSQL \r\n\r\n 1. 3 SQL. SQL”PluS. PUSQL之间的差别 \r\n\r\n 1. 3. 1 SQL \r\n\r\n 1. 3. 2 PL/SQL \r\n\r\n l. 3. 3 SQL*PlUS \r\n\r\n 1. 3. 4 阅读本书需要的资源 \r\n\r\n 1. 4 开始使用PLSQL \r\n\r\n 1. 4. 1 PL/SQL是块结构化的 \r\n\r\n 1. 4. 2 编译和执行简单的块 \r\n\r\n 1. 4. 3 生成输出结果 \r\n\r\n 1. 4. 4 避免重新输入 \r\n\r\n 1. 4. 5 编写第一个函数 \r\n\r\n 1. 4. 6 查找编译错误 \r\n\r\n 1. 4. 7 显示函数的返回值 \r\n\r\n 1. 4. 8 这个简单的函数有用吗 \r\n\r\n 1. 5 使用Developerl2000中的过程生成器执行PL/SQL \r\n\r\n 1. 5. 1 启动过程生成器 \r\n\r\n l. 5. 2 使用交互式PL/SQL \r\n\r\n l. 5. 3 创建SS_THRESH函数 \r\n\r\n 1. 5. 4 与数据库相连 \r\n\r\n 1. 6 使用 SQLPlus Wroksheet \r\n\r\n 1. 6. 1 使用 SQLPlus Wrosheet执行 PL/SQL块 \r\n\r\n 1. 7 总结 \r\n\r\n 1. 8 问与答 \r\n\r\n 1. 9 测验和练习 \r\n\r\n 1. 9. 1 测验 \r\n\r\n 1. 9. 2 练习 \r\n\r\n 第2章 第2天课程:编写声明和块 \r\n\r\n 2. 1 探讨数据类型 \r\n\r\n 2. 1. 1 VMHARZ \r\n\r\n 2. 1. 2 VARCHARZ的子类型 \r\n\r\n 2. 1. 3 CHAR \r\n\r\n 2. 1. 4 CHAR子类型 \r\n\r\n 2. 1. 5 NUMBER \r\n\r\n 2. 1. 6 BINARtwGER \r\n\r\n 2. 1. 7 PLS INTEGER \r\n\r\n 2. 1. 8 DATE \r\n\r\n 2. l. 9 BOOLEN \r\n\r\n 2. 1. 10 LONG \r\n\r\n 2. 1. 11 RAW \r\n\r\n 2. 1. 12 LONG RAW \r\n\r\n 2. 1. 13 ROWID \r\n\r\n 2. 1. 14 UROWID \r\n\r\n 2. 1. 15 MSLABEL \r\n\r\n 2. 2 使用块结构 \r\n\r\n 2. 2. 1 匿名块 \r\n\r\n 2. 2. 2 函数和过程块 \r\n\r\n 2. 2. 3 触发器块 \r\n\r\n 2. 2. 4 嵌套块 \r\n\r\n 2. 2. 5 嵌套函数和过程 \r\n\r\n 2. 2. 6 作用域规则 \r\n\r\n 2. 3 总结 \r\n\r\n 2. 4 问与答 \r\n\r\n 2. 5 测验和练习 \r\n\r\n 2. 5. 1 测验 \r\n\r\n 2. 5. 2 练习 \r\n\r\n 第3章 第3天课程:编写 PL/SQL表达式 \r\n\r\n 3. 1 理解操作符. 表达式和转换 \r\n\r\n 3. 2 使用PL/SQL操作符建立表达式 \r\n\r\n 3. 2. 1 算术操作符 \r\n\r\n 3. 2. 2 比较操作符 \r\n\r\n 3. 2. 3 逻辑操作符 \r\n\r\n 3. 2. 4 字符串操作符 \r\n\r\n 3. 3 对字符串使用比较操作符 \r\n\r\n 3. 3. 1 字符集对字符串比较的影响 \r\n\r\n 3. 3. 2 大小写对字符串比较的影响 \r\n\r\n 3. 4 对日期使用比较操作符 \r\n\r\n 3. 5 使用表达式 \r\n\r\n 3. 5. 1 定义表达式 \r\n\r\n 3. 5. 2 操作符优先级 \r\n\r\n 3. 5. 3 表达式类型 \r\n\r\n 3. 5. 4 表达式中的空值 \r\n\r\n 3. 6 转换数据类型 \r\n\r\n 3. 6. 1 隐式转换 \r\n\r\n 3. 6. 2 显式转换 \r\n\r\n 3. 7 总结 \r\n\r\n 3. 8 问与答 \r\n\r\n 3. 9 测验和练习 \r\n\r\n 3. 9. 1 测验 \r\n\r\n 3. 9. 2 练习 \r\n\r\n 第4章 第4天课程:使用函数. IF语句和循环 \r\n\r\n 4. 1 使用 PL/SQL函数 \r\n\r\n 4. 1. 1 定义参数:形参和实参 \r\n\r\n 4. 1. 2 返回类型 \r\n\r\n 4. 1. 3 函数违规 \r\n\r\n 4. 1. 4 异常处理 \r\n\r\n 4. 1. 5 创建存储函数 \r\n\r\n 4. 1. 6 查找错误 \r\n\r\n 4. 2 NULL语句 \r\n\r\n 4. 2. 1 为何使用NULL语句 \r\n\r\n 4. 2. 2 如何从PL/SQL中使用或不使用参数调用函数 \r\n\r\n 4. 2. 3 调用者和定义者的权限 \r\n\r\n 4. 3 使用PL/SQL语句 \r\n\r\n 4. 3. 1 IF语句 \r\n\r\n 4. 3. 2 IF…MN…ELSE语句 \r\n\r\n 4. 3. 3 嵌套IF语句 \r\n\r\n 4. 3. 4 使用 IF...ELSIF语句 \r\n\r\n 4. 3. 5 嵌套IF语句和ELSIF语句 \r\n\r\n 4. 3. 6 格式化IF语句 \r\n\r\n 4. 3. 7 避免IF语句中的常见错误 \r\n\r\n 4. 3. 8 循环语句 \r\n\r\n 4. 3. 9 反向循环 \r\n\r\n 4. 3. 10 修改步长 \r\n\r\n 4. 4 总结 \r\n\r\n 4. 5 问与答 \r\n\r\n 4. 6 测验和练习 \r\n\r\n 4. 6. 1 测验 \r\n\r\n 4. 6. 2 练习 \r\n\r\n 第5章 第5天课程:实现循环和 GOTO语旬 \r\n\r\n 5. 1 探讨标号和GOTO语句 \r\n\r\n 5. 1. 1 语句标号 \r\n\r\n 5. 1. 2 GOTO语句 \r\n\r\n 5. 1. 3 GOTO语句的作用域规则 \r\n\r\n 5. 1. 4 使用GOTO语句的范例 \r\n\r\n 5. 1. 5 为何使用GOTO语句 \r\n\r\n 5. 2 WHIL循环 \r\n\r\n 5. 2. 1 WHILE循环范例 \r\n\r\n 5. 3 EXry语句和 EXIT WHEN语句 \r\n\r\n 5. 3. 1 使用 EXIT和 EXIT WHEN语句的范例 \r\n\r\n 5. 3. 2 在循环中使用标号和EXIT语句 \r\n\r\n 5. 4 简单循环 \r\n\r\n 5. 4. 1 简单循环范例 \r\n\r\n 5. 4. 2 创建一个REPEAT…UNTIL循环 \r\n\r\n 5. 4. 3 模仿的REPEAT…UN TIL循环范例 \r\n\r\n 5. 5 应该使用哪种循环 \r\n\r\n 5. 6 使用循环的指导原则 \r\n\r\n 5. 6. l 循环的格式 \r\n\r\n 5. 7 递归 \r\n\r\n 5. 7. l 准则 \r\n\r\n 5. 7. 2 练习使用递归 \r\n\r\n 5. 7. 3 为何使用递归 \r\n\r\n 5. 8 总结 \r\n\r\n 5. 9 问与答 \r\n\r\n 5. 10 测验和练习 \r\n\r\n 5. 10. 1 测验 \r\n\r\n 5. 10. 2练习 \r\n\r\n 第6章 第6天课程:使用Oracle的内置函数 \r\n\r\n 6. 1 SQL函数和PLSQL函数的比较 \r\n\r\n 6. 2 主要的函数类型 \r\n\r\n 6. 3 试验函数 \r\n\r\n 6. 4 使用转换函数 \r\n\r\n 6. 4. 1 使用TO--DATh函数 \r\n\r\n 6. 4. 2 使用TON HAR \r\n\r\n 6. 4. 3 使用TOAN BER \r\n\r\n 6. 4. 4 使用 TONHAR函数 \r\n\r\n 6. 5 日期函数 \r\n\r\n 6. 5. 1 SYSDATE函数 \r\n\r\n 6. 5. 2 ThUNC函数 \r\n\r\n 6. 5. 3 ADDNONTHS函数 \r\n\r\n 6. 5. 4 NEXTDAY函数 \r\n\r\n 6. 5. 5 LAST--DAY函数 \r\n\r\n 6. 5. 6 MONTllSNETWEENO函数 \r\n\r\n 6. 5. 7 NEW函数 \r\n\r\n 6. 5. 8 RO[JN’D函数 \r\n\r\n 6. 5. gflllM函数 \r\n\r\n 6. 6总结 \r\n\r\n 6. 7问与答 \r\n\r\n 6. 8测验和练习 \r\n\r\n 6. 8. 1测验 \r\n\r\n 6. 8. 2练习 \r\n\r\n 第7章 第7天课程:过程. 包. 错误和异常 \r\n\r\n 7. 1使用过程 \r\n\r\n 7. 1. 1为何使用过程 \r\n\r\n 7. 1. 2过程和函数 \r\n\r\n 7. 1. 3创建过程 \r\n\r\n 7. 1. 4RETU’RNi%句 \r\n\r\n 7. 1. 5过程依赖性 \r\n\r\n 7. 1. 6重新编译存储过程 \r\n\r\n 7. 1. 7重新创建和修改函数 \r\n\r\n 7. 1. 8调用存储过程 \r\n\r\n 7. 1. 9使用参数 \r\n\r\n 7. 1. 10参数定义 \r\n\r\n 7. 1. 11列出存储过程的信息 \r\n\r\n 7. 1. 12删除存储过程 \r\n\r\n 7. 1. 13重载过程 \r\n\r\n 7. 1. 14使用递归过程 \r\n\r\n 7. 2过程调用的安全性 \r\n\r\n 7. 3探讨包 \r\n\r\n 7. 3. 1为何使用包 \r\n\r\n 7. 3. 2包规范 \r\n\r\n 7. 3. 3包体 \r\n\r\n 7. 3. 4创建包 \r\n\r\n 7. 3. 5调用包子程序 \r\n\r\n 7. 3石重新编译包 \r\n\r\n 7. 3. 7公有和私有包对象 \r\n\r\n 7. 3. 8包调用的安全性 \r\n\r\n 7. 3. 9变量. 游标和常量的持续性 \r\n\r\n 7. 3. 10包状态 \r\n\r\n 7. 3. 11包的依赖性 \r\n\r\n 7. 4捕获错误和异常 \r\n\r\n 7. 4. l异常处理结构 \r\n\r\n 7. 4. 2 SQLCODE和SQLEto1M函数 \r\n\r\n 7. 4. 3发生异常后继续处理 \r\n\r\n 7. 4. 4发生异常后重试 \r\n\r\n 7. 4. 5重新引发异常 \r\n\r\n 7. 4. 6异常的作用域规则 \r\n\r\n 7. 4. 7传播异常 \r\n\r\n 7. 5总结 \r\n\r\n 7. 6问与答 \r\n\r\n 7. 7测验和练习 \r\n\r\n 7. 7. 1测验 \r\n\r\n 7. 7. 2练习 \r\n\r\n 第1周课程复习 \r\n\r\n 第2部分第2周 \r\n\r\n 第8章 第8天课程 SQL \r\n\r\n 8. 1SQL DML语句的类型 \r\n\r\n 8. 2创建一些Oracle表 \r\n\r\n 8. 3使用INSERT语句 \r\n\r\n 8. 3. 1插入一些数据 \r\n\r\n 8. 4单个的SELECT语句 \r\n\r\n 8. 4. 1 SELECT i%句范例 \r\n\r\n 8. 5使用UPDATE语句和DELrt语句 \r\n\r\n 8. 6异常处理类型 \r\n\r\n 8. 7使用 LOCK TABLE语句 \r\n\r\n 8. 8事务控制语句 \r\n\r\n 8. 9使用记录 \r\n\r\n 8. 9. 1声明记录变量 \r\n\r\n 8. 9. 2使用%TYPE属性 \r\n\r\n 8. 9. 3使用基于数据库表的记录变量 \r\n\r\n 8. 9. 4使用记录变量和SELECT语句 \r\n\r\n 8. 9. 5使用基于游标定义的记录变量 \r\n\r\n 8. 9. 6包层次的声明 \r\n\r\n 8. 10伪列 \r\n\r\n 8. 10. ICUIUflWL伪列和NEXVAL伪列 \r\n\r\n 8. 10. 2 RORD伪列 \r\n\r\n 8. 10. 3 ROWN’UM伪列 \r\n\r\n 8. 11总结 \r\n\r\n 8. 12问与答 \r\n\r\n 8. 13测验和练习 \r\n\r\n 8. 13. 1测验 \r\n\r\n 8. 13. 2练习 \r\n\r\n 第9章 第9天课程:使用游标操纵数据 \r\n\r\n 9. 1什么是游标 \r\n\r\n 9. 2显式游标 \r\n\r\n 9. 2. 1声明游标 \r\n\r\n 9. 2. 2声明游标参数 \r\n\r\n 9. 2. 3打开游标 \r\n\r\n 9. 2. 4将数据取回到游标中 \r\n\r\n 9. 2. 5关闭游标 \r\n\r\n 9. 2. 6显式游标的属性 \r\n\r\n 9. 3显式游标范例 \r\n\r\n 9. 3. 1使显式游标自动化 \r\n\r\n 9. 4隐式游标 \r\n\r\n 9. 4. 且隐式游标的属性 \r\n\r\n 9. 5游标参数的作用域 \r\n\r\n 9. 6游标RETURN子句和包 \r\n\r\n 9. 7游标变量 \r\n\r\n 9. 7. 1声明游标变量 \r\n\r\n 9. 7. 2通过游标变量使用游标 \r\n\r\n 9. 7. 3将游标变量赋给其他变量 \r\n\r\n 9. 7. 4将游标变量作为参数 \r\n\r\n 9. 8游标的当前记录 \r\n\r\n 9. 9游标的作用域 \r\n\r\n 9. 10游标别名 \r\n\r\n 9. 11总结 \r\n\r\n 9. 12问与答 \r\n\r\n 9. 13测验和练习 \r\n\r\n 9. 13. 1测验 \r\n\r\n 9. 13. 2练习 \r\n\r\n 第10章 第10天课程:集合 \r\n\r\n 10. 且使用PUSQL索引表 \r\n\r\n 10. 1. 1声明索引表 \r\n\r\n 10. 1. 2将条目插入到索引表中 \r\n\r\n 10. 1. 3引用索引表中的值 \r\n\r\n 10. 1. 4修改表中的条目 \r\n\r\n 10. 1. 5删除表中的条目 \r\n\r\n 10. 1. 6 PUSQL表的方法 \r\n\r\n 10. 2使用嵌套表 \r\n\r\n 10. 2. 1声明嵌套表 \r\n\r\n 10. 2. 2给嵌套表添加条目 \r\n\r\n 10. 2. 3删除嵌套表中的东 \r\n\r\n 10. 3使用变长数组 \r\n\r\n 10. 3. 1声明和初始化变长数组 \r\n\r\n 10. 3. 2给变长数组添加和删除数据 \r\n\r\n 10. 4使用批绑定 \r\n\r\n 10. 4. 1使用 BULK COLLECT \r\n\r\n 10. 4. 2使用FORAL \r\n\r\n 10. 5集合的异常处理 \r\n\r\n 10. 6总结 \r\n\r\n 10. 7问与答 \r\n\r\n 10. 8测验和练习 \r\n\r\n 10. 8. 1测验 \r\n\r\n 10. 8. 2练习 \r\n\r\n 第11章 第11天课程:编写数据库触发器 \r\n\r\n 11. 1 什么是触发器 \r\n\r\n 11. 2 DML触发器 \r\n\r\n 11. 2. 1 DML触发器范例 \r\n\r\n 11. 2. 2 DML触发器分类 \r\n\r\n 11. 2. 3定义数据库触发器的语法 \r\n\r\n 11. 3 触发器的用途 \r\n\r\n 11. 3. 1维护数据完整性 \r\n\r\n 11. 3. 2维护历史记录 \r\n\r\n 11. 4管理触发器 \r\n\r\n 11. 4. 1列出触发器 \r\n\r\n 11. 4. 2查看触发器的代码 \r\n\r\n 11. 4. 3打开和关闭触发器 \r\n\r\n 11. 5非传统触发器 \r\n\r\n 11. 5. 1定义作用于数据库事件或模式事件的触发器的语 \r\n\r\n 11. 5. 2事件属性 \r\n\r\n 11. 5. 3编写一个数据库事件触发器 \r\n\r\n 11. 5. 4编写DDL事件触发器 \r\n\r\n 11. 6使用替代触发器 \r\n\r\n 11. 6. 1定义替代触发器的语法 \r\n\r\n 11. 6. 2编写一个替代触发器 \r\n\r\n 11. 7探讨触发器的局限性 \r\n\r\n 11. 7. 互触发器和变化表 \r\n\r\n 11. 8总结 \r\n\r\n 11. 9问与答 \r\n\r\n 11. 10测验和练习 \r\n\r\n 11. 10. l测验 \r\n\r\n 11. 10. 2练习 \r\n\r\n \r\n\r\n 第 12章第 12天课程:将 Oraclest对象用于面向对象编S \r\n\r\n 12. l面向对象编程的基本知识 \r\n\r\n 12. 1. l封装 \r\n\r\n 12. 1. 2继承 \r\n\r\n 12. 1. 3多态 \r\n\r\n 12. 1. 4类. 对象. 属性和方法 \r\n\r\n 12. 1. 5 OOP优于传统方法的地方 \r\n\r\n 12. 2 Oraclest是如何实现对象的 \r\n\r\n 12. 2. 1对象类型 \r\n\r\n 12. 2. 2对象表 \r\n\r\n 12. 2. 3对象视图 \r\n\r\n 12. 3定义对象类型 \r\n\r\n 12. 3. l构造函数 \r\n\r\n 12. 3. 2取值方法 \r\n\r\n 12. 3. 3赋值方法 \r\n\r\n 12. 4实例化和使用对象 \r\n\r\n 12. 5存储和检索对象 \r\n\r\n 12. 5. 1将对象存储为表字段 \r\n\r\n 12. 5. 2检索和更新表字段中的对象 \r\n\r\n 12. 6使用对象表 \r\n\r\n 12. 6. 1将对象存储在对象表中 \r\n\r\n 12. 6. 2检索和更新对象表中的对象 \r\n\r\n 12石. 3删除对象表中的对象 \r\n\r\n 12. 7嵌套和共享对象 \r\n\r\n 12. 7. 1点号表示法 \r\n\r\n 12. 7. 2对象引用 \r\n\r\n 12. 8探讨 SELF参数 \r\n\r\n 12. 9重载 \r\n\r\n 12. 10比较对象 \r\n\r\n 12. 10. 1 ORDER方法 \r\n\r\n 12. 10. 2 MAP方法 \r\n\r\n 12. 11 OraCIC实现的局限性 \r\n\r\n 12. 12总结 \r\n\r\n 12. 13问与答 \r\n\r\n 12. 14测验和练习 \r\n\r\n 12. 14. 1测验 \r\n\r\n 12. 14. 2练习 \r\n\r\n 第13章 第13天课程:调试代码并防止错误 \r\n\r\n 13. 1定位并消除语法错误 \r\n\r\n 13. 1. 1识别语法错误 \r\n\r\n 13. 1. 2一个识别语法错误的范例 \r\n\r\n 13. 1. 3防止语法错误 \r\n\r\n 13. 2处理逻辑错误 \r\n\r\n 13. 2. 1操作次序 \r\n\r\n 13. 2. 2死循环 \r\n\r\n 13. 2. 3逻辑错误的排除方法 \r\n\r\n 13. 3使用工具帮助调试程序 \r\n\r\n 13. 3. 1将DBMS_OUTPUT用做调试工具 \r\n\r\n 13. 3. 2编写 DEBUG包 \r\n\r\n 13. 4防止错误并规划以后的调试 \r\n\r\n 13. 4. 且定义需求和规划项目 \r\n\r\n 13. 4. 2使用模块化方法编码 \r\n\r\n 13. 4. 3注释代码 \r\n\r\n 13. 4. 4在代码中编写断言 \r\n\r\n 13. 4. 5格式化代码 \r\n\r\n 13. 5总结 \r\n\r\n 13. 6问与答 \r\n\r\n 13. 7测验和练习 \r\n\r\n 13. 7. 1测验 \r\n\r\n 13. 7. 2练习 \r\n\r\n 第14章第14天课程:使用大型对象类型 \r\n\r\n 14. 1探讨大型对象数据类型 \r\n\r\n 14. 1. 1 LOB的局限性 \r\n\r\n 14. 1. 2 LOB和LONG数据类型的比较 \r\n\r\n 14. 1. 3 将LONG转换为LOB \r\n\r\n 14. 2在OraClest数据库中使用外部文件 \r\n\r\n 14. 2. 1创建目录对象 \r\n\r\n 14. 2. 2 BFILE的局限性 \r\n\r\n 14. 3将DBMSthOB包用于BFILE \r\n\r\n 14. 3. 1 BHLE:NAME函数 \r\n\r\n 14. 3. 2 COMRUIE函数 \r\n\r\n 14. 3. 3 FILECOLOSE过程 \r\n\r\n 14. 3. 4 MLECLOSEALL过程 \r\n\r\n 14. 3. 5 MLEEXISTS函数 \r\n\r\n 14. 3. 6 MLEGETNAME过程 \r\n\r\n 14. 3. 7 FILESOPEN函数 \r\n\r\n 14. 3. 8 FILEOPEN过程 \r\n\r\n 14. 3. 9 GEILENGTH函数 \r\n\r\n 14. 3. 10 INSTR函数 \r\n\r\n 14. 3. 11 READ过程 \r\n\r\n 14. 3. 12 SUBSTR函数 \r\n\r\n 14. 4使用DMBS上OB包的BFILE范例 \r\n\r\n 14. 4. 1访问BFILE \r\n\r\n 14. 4. 2比较文件 \r\n\r\n 14. 5使用定位器 \r\n\r\n 14. 6将DBMSNOB包用于内部LOB \r\n\r\n 14. 6. 1 APPEND过程 \r\n\r\n 14. 6. 2 COMIVUIE函数 \r\n\r\n 14. 6. 3 COPY过程 \r\n\r\n 14. 6. 4 EMPTY_BLOB函数 \r\n\r\n 14. 6. 5 EMPTY_CLOB函数 \r\n\r\n 14. 6. 6 ERASE过程 \r\n\r\n 14. 6. 7 GETLENGTH函数 \r\n\r\n 14. 6. 8 INSTR函数 \r\n\r\n 14. 6. 9 READ过程 \r\n\r\n 14. 6. 10 SUBSTR函数 \r\n\r\n 14. 6. 11 TRIM过程 \r\n\r\n 14. 6. 12 WRITE过程 \r\n\r\n 14. 7使用DMBS上OB包的内部LOB范例 \r\n\r\n 14. 7. l创建一个表 \r\n\r\n 14. 7. 2给表添加数据 \r\n\r\n 14. 7. 3使用COPY过程将数据添加到表LOBs中 \r\n\r\n 14. 7. 4使用APPEND和VqllTh操纵内部LOB \r\n\r\n 14. 7. 5分析内部LOB的内容 \r\n\r\n 14. 7. 6使用TRIM和ERASE编辑CLOB \r\n\r\n 14. 8临时 LOB \r\n\r\n 14. 8. 且管理临时LOB \r\n\r\n 14. 8. 2创建临时LOB \r\n\r\n 14. 9总结 \r\n\r\n 14. 10问与答 \r\n\r\n 14. 11测验和练习 \r\n\r\n 14. 11. 1测验 \r\n\r\n 14. 11. 2练习 \r\n\r\n 第2周课程复习 \r\n\r\n 第3部分第3周课程 \r\n\r\n 第15章第15天课程:管理事务和锁定 \r\n\r\n 15. 1事务类型 \r\n\r\n 15. 2开始事务 \r\n\r\n 15. 3结束事务 \r\n\r\n 15. 4撤销事务 \r\n\r\n 15. 5两步提交 \r\n\r\n 15. 6使用保存点创建书签 \r\n\r\n 15. 7使用 RELEASE选项 \r\n\r\n 15. 8使用锁定 \r\n\r\n 15. 8. 1锁定表 \r\n\r\n 15. 8. 2锁定记录 \r\n\r\n 15. 8. 3显式锁定 \r\n\r\n 15. 8. 4 DBMSthOCK包 \r\n\r\n 15. 8. 5使用其他锁定 \r\n\r\n 15. 8. 6监视锁定 \r\n\r\n 15. 9总结 \r\n\r\n 15. 10问与答 \r\n\r\n 15. 11测验和练习 \r\n\r\n 15. 11. l测验 \r\n\r\n 15. 11. 2练习 \r\n\r\n 第 16章第 16天课程:主成动态 SQL \r\n\r\n 16. l什么是动态SQL, 为何使用它 \r\n\r\n 16. 2两种使用动态SQL的方法 \r\n\r\n 16. 3使用DBMS_SQL包 \r\n\r\n 16. 3. 1使用DBMS_SQL包执行非查询DDL和DML \r\n\r\n 16. 3. 2使用DBMS_SQL包执行查询 \r\n\r\n 16. 3. 3使用DBMS_SQL包执行匿名PL/SQL块 \r\n\r\n 16. 3. 4处理DBMS-SQL错误 \r\n\r\n 16. 3. 5使用LASTHOWNOUNT \r\n\r\n 16. 3. 6使用 LASTNOWID \r\n\r\n 16. 3. 7使用 LASTNngORNOSITON \r\n\r\n 16. 4使用本机动态SQL \r\n\r\n 16. 4. 1执行DML和DDL \r\n\r\n 16. 4, 2执行SQL查询 \r\n\r\n 16. 4. 3执行PLSQL块 \r\n\r\n 16. 5总结 \r\n\r\n 16. 6问与答 \r\n\r\n 16. 7测验和练习 \r\n\r\n 16. 7. 1测验 \r\n\r\n 16. 7. 2练习 \r\n\r\n 第17章第17天课程:将数据写到文件和显示屏 \r\n\r\n 17. IDBMS--OUTPUT包 \r\n\r\n 17. 1. 1开启 DBMS. OUTPUT包 \r\n\r\n 17. 1. 2关闭 DBMS-OUTPUT包 \r\n\r\n 门. 1. 3将数据写到缓冲区 \r\n\r\n 17. 1. 4从缓冲区读取数据 \r\n\r\n 17. l. 5 DBMS--QUTPUT包9]发的异常 \r\n\r\n 17. 2使用 UTLN包读写文件 \r\n\r\n 17. 2. 1文件输入 \r\n\r\n 17. 2. 2使用UTLN E过程和函数 \r\n\r\n 17. 2. 3 HUSH过程 \r\n\r\n 17. 2. 4使用UTLMLE的范例 \r\n\r\n 17. 3将TEXTIO用于客户文件 \r\n\r\n 17. 4总结 \r\n\r\n 17. 5问与答 \r\n\r\n 17. 6测验和练习 \r\n\r\n 17. 6. 1测验 \r\n\r\n 17. 6. 2练习 \r\n\r\n 第18章第18天课程:管理数据库作业 \r\n\r\n 18. 1使用DBMSjOB包提交作业 \r\n\r\n 18. 2使用后台进程 \r\n\r\n 18. 3执行作业 \r\n\r\n 18. 3. 1使用SUBMIT将作业提交给作业队列 \r\n\r\n 18. 3. 2使用 RUN立刻执行作业 \r\n\r\n 18. 3. 3探讨作业环境 \r\n\r\n 18. 4查看作业 \r\n\r\n 18. 4. 1查看作业的范例 \r\n\r\n 18. 5作业管理 \r\n\r\n 18. 5. 1删除作业 \r\n\r\n 18. 5. 2修改作业 \r\n\r\n 18. 5. 3导入和导出作业 \r\n\r\n 18. 5. 4处理损坏的作业 \r\n\r\n 18. 6练习管理作业 \r\n\r\n 18. 6. 1创建作为作业提交的过程 \r\n\r\n 18. 6. 2将所有的作业提交给作业队列 \r\n\r\n 18. 6. 3立刻运行所有的三个作业 \r\n\r\n 18. 6. 4查看关于作业的信息 \r\n\r\n 18. 6. 5通过运行 HELLO作业修改作业 \r\n\r\n 18. 6. 6删除 Hello作业 \r\n\r\n 18. 7总结 \r\n\r\n 18. 8问与答 \r\n\r\n 18. 9测验和练习 \r\n\r\n 18. 9. 1测验 \r\n\r\n 18. 9. 2练习 \r\n\r\n 第19章第19天课程:报警以及与其他过程通信:DBMS_ALERT和DBMS_PIPE包 \r\n\r\n 19. 1 DBMS_ALERT包 \r\n\r\n 19. 2使用SIGNAL发布报警 \r\n\r\n 19. 3注册报警 \r\n\r\n 19. 4等待特定的报警 \r\n\r\n 19. 5等待所有已注册的报警 \r\n\r\n 19. 6删除一个报警 \r\n\r\n 19. 7删除所有的报警 \r\n\r\n 19. 8 SET_AIEFAULTS过程涉及的轮讯和事件 \r\n\r\n 19. 9 演示DBMS_ALERT包的用法 \r\n\r\n 19. 9. 1创建备份数据库 \r\n\r\n 19. 9. 2创建触发器, 以发送报警 \r\n\r\n 19. 9. 3等待报警 \r\n\r\n 19. 10 DBMSJIPE包 \r\n\r\n 19. 10. 1公有管道和私有管道 \r\n\r\n 19. 10. 2使用管道 \r\n\r\n 19. 10. 3 DMBS_PIPE中的函数和过程 \r\n\r\n 19. 10. 4使用管道的范例 \r\n\r\n 19. 10. 5其他管道函数和过程 \r\n\r\n 19. 10. 6管道的其他用途 \r\n\r\n 19. 11报警和管道的比较 \r\n\r\n 19. 12总结 \r\n\r\n 19. 13问与答 \r\n\r\n 19. 14测验和练习 \r\n\r\n 19. 14. l测验 \r\n\r\n 19. 14. 2练习 \r\n\r\n 第20章第 20天课程:PL/SQL和Java \r\n\r\n 20. l使用Oracle的Java引擎 \r\n\r\n 20. 2 PLSQL将被淘汰吗 \r\n\r\n 20. 3创建Java过程 \r\n\r\n 20. 3. 1 需要的前提条件 \r\n\r\n 20. 3. 2 SS_CONSTANTS类 \r\n\r\n 20. 3. 3装载类 \r\n\r\n 20. 3. 4公布SSThresh方法 \r\n\r\n 20. 3. 5在 SQL”PISS中调用 SSHHRESH \r\n\r\n 20. 3. 6在PLSQL中调用SSHHRESH \r\n\r\n 20. 3. 7删除 SSContants类 \r\n\r\n 20. 4从PLSQL中调用Java \r\n\r\n 20. 4. IEIDployee类 \r\n\r\n 20. 4. 2公布 Java方法 \r\n\r\n 20. 4. 3数据类型兼容性 \r\n\r\n 20. 4. 4使用 OUT和 IN OUT参数 \r\n\r\n 20. 5使用SQLJ从Java中调用PLSQL \r\n\r\n 20. 5. 1使用SQLJ执行匿名PLSQL块 \r\n\r\n 20. 5. 2使用SQLJ调用PLISQL过程或函数 \r\n\r\n 20. 6总结 \r\n\r\n 20. 7问与答 \r\n\r\n 20. 8测验和练习 \r\n\r\n 20. 8. 1测验 \r\n\r\n 20. 8. 2 练习 \r\n\r\n 第21章 第21天课程:高级排队 \r\n\r\n 21. 1 什么是AQ \r\n\r\n 21. 1. 1 揭开AQ的神秘面纱 \r\n\r\n 21. l. 2 AQ的重要特性 \r\n\r\n 21. 2 配置服务器, 以便使用AQ \r\n\r\n 21. 3 探讨AQ方案 \r\n\r\n 21. 4 创建一个消息队列 \r\n\r\n 21. 4. l 为负载定义一个类型 \r\n\r\n 21. 4. 2 创建队列表 \r\n\r\n 21. 4. 3 创建队列 \r\n\r\n 21. 5 启动和关闭队列 \r\n\r\n 21. 6 将消息放入队列 \r\n\r\n 21. 6. l 与入队相关的记录类型 \r\n\r\n 21. 6. 2 将消息放入队列 \r\n\r\n 21. 7 从队列中检索消息 \r\n\r\n 21. 7. 1 与出队相关的记录类型 \r\n\r\n 21. 7. 2 将消息从队列中取出 \r\n\r\n 21. 8 使用其他AQ过程 \r\n\r\n 21. 8. 1 删除队列 \r\n\r\n 21. 8. 2 删除队列表 \r\n\r\n 21. 8. 3 授予和收回访问队列的权限 \r\n\r\n 21. 9 总结 \r\n\r\n 21. 10 问与答 \r\n\r\n 21. 11 测验和练习 \r\n\r\n 21. 11. 1 测验 \r\n\r\n 21. 11. 2 练习 \r\n\r\n 第3周 课程复习 \r\n\r\n 附录A 测验和练习答案 \r\n
\r\n
欢迎使用本书, 购买本书说明您对PL/SQL语言感兴趣. PL/SQL是Oracle. 的关系型数据库过程性编程语言, 它让您能够开发复杂的. 功能强大的程序, 以访问和操纵Oraclest数据库中的数据. 我们在本书中包含了尽量多的范例, 以说明 PL/SQL的功能.
本书是按照在21天内教您学会Oracle的过程性语言的主要内容而组织的, 每天一章. 每章包含PL/SQL中的一个特定的主题, 大约需要3~5小时(当然这取决于您的阅读速度). 本书向您介绍概念及其在PL/SQL程序中的实际应用. 我们强烈建议您将学到的知识用于实践中, 请将清单中的代码输入到本地Oracle数据库中, 以亲自感受PL/SQL. 在学习过程中, 通过实践可以更深刻地理解PL/SQL. 请尽量掌握本书包含的概念, 因为这将使您学到的东西更牢固.
对于读者, 我们做了一些假设. 我们假设读者对SQL和Oracle数据库有一些了解, 读者应该知道如何编写简单的SELECT. INSERT. UPDATE和DELETE语句, 另外, 读者应该对Oracle数据库对象(如表)以及其他模式对象(如序列和视图)等有所了解. 我们假设读者还要进行PU/SQL的一些实际应用, 而不仅仅是学习语言的语法. 因此, 在书中加入了范例和注释, 以达到这种目的.
一. 本书的内容
本书的开始介绍了建立PL/SQL程序的基础知识. 在第1周, 您将学习 PL/SQL的基本元素, 如表达式. 各种循环. 内置函数. 过程和错误处理例程. 学习了基础知识后, 在第2周将学习更高级的PL/SQL主题, 比如如何使用游标处理技术. 集合. 触发器. 复合数据库结构. 调试处理技术和大型数据对象建立PL/SQL程序. 最后. 在第3周将介绍事务管理. 动态SQL. Java引擎和高级排队技术. 阅读完本书后, 您将能够开发自己的PL/SQL程序, 您将知道如何将这些程序存储在数据库中, 并执行它们.
许多章节互相依赖. 当逐章向前阅读时, 介绍的主题将越来越详细, 越来越复杂. 因此, 建议从第1章开始, 逐渐阅读完本书. 然而, 如果您熟悉PL/SQL, 可能想直接阅读感兴趣的章节.
要想正确应用本书使用的代码, 您需要知道自己的Orale版本. 虽然编写本书时使用的是Oracle8i, 但书中的大部分代码都能向后与以前的Oracle版本兼容. 书中也介绍了一些Oraclest中的新功能, 以便那些使用
Oraclest的读者可以学习并使用这些增强的功能.
最后, 本书的范例代码清单都能从www. samspublishing. corn取得. 只需在这个网站查找本书, 并下载相应的文件即可.
二. 本书适合的读者
本书是为初级程序员和中级程序员编写的, 但对经验更为丰富的程序员也会有所帮助. 本书介绍的详细内容让初学者很快便能开始开发PLSQL应用程序.
三. 新内容
这是本书的第二版, 我们的主要目的是编写一个新的版本, 加入有关Oraclest(8. 1. 5版)版本中包含的重要的新功能的知识. 另一个目的是重新编排那些可能引起困惑的内容(根据读者的E-mail得知). 我们相信这两个目的都已经达到了.
在本书中, 您将学习的Oracle8i中的新的PL/SQL功能包括:
执行存储代码时使用调用者的权限,
PL/SQL批绑定,
在PL/SQL中嵌入动态SQL,
按引用传递参数,
独立的PL/SQL块:
从PL/SQL中调用Java以及在Java中调用PL/SQL,
高级排队.
高级排队是一个健壮的消息传送系统, 适合在分布式计算环境中使用. 它实际上是在Oracle8i中引入的, 但在Oraclest中做了重大的改进. 这是一个提供发布l订阅消息传送系统, 功能远远超过了dbms_Pipe包提供的功能.
Oracle8i在数据库中实现了Java引擎, 在这方面, Oracle在市场上引起了很大的反响. 现在, PL/SQL代码可以调用Java代码, 而Java代码也可以调用PL/SQL代码. 本书不介绍如何使用Java编程, 但将介绍如何将Java类装载到Oracle中, 以及如何包装类中的方法, 以便能够在PL/SQL中调用它们.
独立 PL/SQL块支持独立的事务, 后者能够在更大的事务中执行和提交. 这一功能使得开发人员编写可重用的组件更容易, 也是我期待多年的新功能.
相对而言, 接引用传递参数是一项不太重要的改进. 当您知道函数不会做任何修改时, 它提供了一种更为安全的向函数传递参数的方法.
改进后的动态SQL是Oracle提供的在PL/SQL中编写动态SQL代码的新语法. 它提供了与DBMS_SQL包类似的功能, 但使用起来更容易.
PL/SQL批绑定是一种在服务器和客户间传递大量数据的机制. 不是以每次一条的方式检索50条记录, 而是一次获得50条记录. 这极大地提高了性能, 因为减少了大量的网络开销.
在Oracle中, 存储代码的定义者权限模型总是使不熟悉Oracle环境的开发人员感到困惑. 现在, Oracle8i使您部署存储代码时能够选择定义者权限模型或调用者权限模型. 这使您能够公开部署一个访问数据, 但不会威胁到数据安全的通用过程.
Oracle8i是一个令人激动的新产品. PL/SQL是一种优秀的用于数据库编程的语言. 我们希望您阅读本书时, 为能学习它们而高兴.
·作者·