Oracle PL/SQL程式设计


Oracle PL/SQL程式设计

文章插图
Oracle PL/SQL程式设计【Oracle PL/SQL程式设计】《Oracle PL/SQL程式设计》是人民邮电出版社出版的一本图书 。
基本介绍书名:Oracle PL/SQL程式设计
作者:弗伊尔斯坦(Steven Feuerstein) 、普瑞拜尔(Bill Pribyl)
译者:张晓明
ISBN:7115231435, 9787115231437
页数:1106页
出版社:人民邮电出版社
出版时间:2011年7月1日
装帧:平装
开本:16开
内容简介《Oracle PL/SQL程式设计(第5版)(套装上下册)》基于Oracle资料库11g,从PL/SQL编程、PL/SQL程式结构、PL/SQL程式数据、PL/SQL中的SQL、PL/SQL套用构建、高级PL/SQL主题这6个方面详细系统地讨论了PL/SQL以及如何有效地使用它 。《Oracle PL/SQL程式设计(第5版)(套装上下册)》能够帮助你充分利用PL/SQL来解决资料库开发中遇到的各种问题,引导你掌握各种构建套用的技巧和技术,以便使你编写出高效、可维护的代码 。《OraclePL/SQL程式设计(第5版)》不但介绍了大量的Oracle11g的PL/SQL新性能,还提供了许多最佳化PL/SQL性能的新方法 。《OraclePL/SQL程式设计(第5版)》结构清晰,示例丰富,实践性强,适用于Oracle资料库开发人员、Oracle资料库管理员等相关资料库从业人员,也可以作为各大、中专院校相关专业师生的参考用书和相关培训机构的培训教材 。编辑推荐《Oracle PL/SQL程式设计(第5版)(套装上下册)》:近15年来,成千上万的PL/SQL程式设计师——无论是初学者还是经验丰富的开发者——都同样需要依赖《oracle PL/SQL程式设计》来帮助他们充分掌握和套用这门功能强大的语言 。第5版是基于Oracle资料库11g的R1、R2两个版本的最新版,包含了语法、建议、大量实例和许多新的信息 。了解新特徵,包括基于版本的重定义功能、函式结果快取功能、CONTINUE语句、複合触发器和针对大对象的SecureFiles 。使用工具和技巧来最佳化PL/sQL性能,例如PL/Scope和PL/SQL沖的层次化profiler 。探讨了数据类型、条件控制语句和顺序控制语句、循环、异常处理、安全特性、全球化和本地化问题,以及PL/SQL架构 。通过使用过程、函式、触发器和包,建立模组化的PL/SQL套用 。Steven Feuerstein是Oracle PL/sQL领域全球最领先的专家之一 。作为10本PL/sQL书籍的作者,他从1980年开始从事软体开发,现在是Quest软体公司的PL/sQL布道者 。媒体推荐对于应用程式开发人员而盲,Oracle资料库11g中出现的一些关键的新特徵和性能使得PL/SQL这门语言更加重要 。在这一版中,Steven Feuerstein和Bill Priby对于如何使用PL/SQL给出了更有价值的指导 。他们非同寻常的见解和观点将会帮助应用程式开发人员充分利用PL/SQL的所有新性能,并且最大限度地发挥应用程式的性能 。大量实例和清晰的讲解使读者不仅可以轻鬆掌握如何使用PL/SQL的特性,而且能够理解针对特殊套用需求为什幺要这幺做 。对于建立基于Oracle的套用的开发者而言,深入理解PL/SQL知识的重要性是不言而喻的 。而对于每一位想学好PL/SQL的人来说,这本书都是至关重要的 。——Ken JacobsOracle公司产品战略副总裁很久以来,对于每一位认真的PL/SQL开发人员来说,这本书都是必不可少的 。引人入胜的叙述方式使得这本书成为我书桌上不可或缺的一员 。——Alex De VergoriBetfair有限公司资料库架构师Oracle杂誌2008年年度PL/SQL开发者目录Oracle PL/SQL程式设计(第5版)(上册)目录:第1部分 PL/SQL编程第1章 PL/SQL概述 31.1 什幺是PL/SQL? 31.2 PL/SQL的起源 41.2.1 早期的PL/SQL 41.2.2 改进的应用程式移植能力 51.2.3 改进的执行授权和事务一致性 51.2.4 低调地起步,稳定地前进 61.3 这就是PL/SQL 61.3.1 与SQL整合 71.3.2 控制和条件逻辑 81.3.3 出现错误了 91.4 关于PL/SQL的版本 101.4.1 Oracle资料库11g的新特性 121.5 PL/SQL开发人员的资源 151.5.1 O’Reilly PL/SQL系列 161.5.2 网路上的PL/SQL 171.6 一些建议 181.6.1 不要太着急 181.6.2 不要怕寻求帮助 191.6.3 採用一种创建新的甚至激进的方法 20第2章 创建并运行PL/SQL代码 212.1 在资料库中导航 212.2 创建和编辑原始码 222.3 SQL*Plus 232.3.1 启动SQL*Plus 242.3.2 运行一个SQL语句 262.3.3 运行PL/SQL程式 262.3.4 运行脚本 282.3.5 什幺是“当前目录” 292.3.6 其他SQL*Plus任务 302.3.7 SQL*Plus中的错误处理 342.3.8 喜欢或者讨厌SQL*Plus的原因 342.4 执行必要的PL/SQL任务 352.4.1 创建存储过程 352.4.2 执行存储过程 392.4.3 显示存储过程 392.4.4 存储程式的授权和别名 402.4.5 删除存储程式 412.4.6 隐藏存储过程的原始码 412.5 编辑PL/SQL的环境 422.6 在其他语言中调用PL/SQL 432.6.1 C:使用Oracle的预编译器(Pro*C) 442.6.2 Java:使用JDBC 452.6.3 Perl:使用Perl DBI和DBD:Oracle 462.6.4 PHP:使用Oracle扩展 472.6.5 PL/SQL Server Pages 482.6.6 其他 49第3章 语言基础 503.1 PL/SQL块结构 50 3.1.1 匿名块 523.1.2 命名块 533.1.3 嵌套块 543.1.4 作用範围 553.1.5 规範SQL语句中所有对变数和列的引用 563.1.6 可见性 583.2 PL/SQL字元集 613.3 标识符 633.3.1 保留字 643.3.2 空白和关键字 663.4 直接量 663.4.1 NULL 673.4.2 在一个直接量字元串中嵌入单引号 683.4.3 数字直接量 693.4.4 布尔直接量 703.5 分号分隔设定 703.6 注释 703.6.1 单行注释语法 713.6.2 多行注释语法 713.7 PRAGMA关键字 723.8 标籤 73第2部分 PL/SQL程式结构第4章 条件和顺序控制 774.1 IF语句 774.1.1 IF-THEN组合 784.1.2 IF-THEN-ELSE组合 804.1.3 IF-THEN-ELSIF组合 814.1.4 避免IF语法陷阱 824.1.5 嵌套的IF语句 844.1.6 短路求值 844.2 CASE语句和表达式 864.2.1 简单的CASE语句 874.2.2 搜寻型CASE语句 884.2.3 嵌套的CASE语句 904.2.4 CASE表达式 914.3 GOTO语句 934.4 NULL语句 944.4.1 增加程式的可读性 944.4.2 在标籤之后使用NULL 95第5章 用循环进行叠代处理 965.1 循环的基础知识 965.1.1 不同循环的例子 975.1.2 PL/SQL循环结构 985.2 简单循环 995.2.1 终止简单循环:EXIT和EXIT WHEN 1005.2.2 模仿一个REPEAT UNTIL循环 1015.2.3 人为的无限循环 1015.3 WHILE循环 1035.4 数值型的FOR循环 1045.4.1 使用数值型FOR循环的规则 1055.4.2 数值型FOR循环的例子 1055.4.3 处理非平滑增长 1065.5 游标FOR循环 1075.5.1 游标型FOR循环的例子 1085.6 循环的标籤 1095.7 CONTINUE语句 1105.8 叠代处理的技巧 1135.8.1 循环索引使用容易理解的名称 1135.8.2 好的退出方式 1145.8.3 获得FOR循环执行信息 1155.8.4 循环式的SQL语句 116第6章 异常处理 1186.1 异常处理概念和术语 1186.2 定义异常 1206.2.1 声明有名异常 1216.2.2 异常名称和错误代码相互关联 122 6.2.3 被命名的系统异常 1256.2.4 异常的作用範围 1276.3 抛出异常 1286.3.1 RAISE语句 1286.3.2 使用RAISE_APPLICATION_ERROR 1296.4 处理异常 1306.4.1 内置的错误函式 1326.4.2 在一个单独的句柄中包含多个异常 1376.4.3 未处理的异常 1376.4.4 传播未处理异常 1386.4.5 异常后继续 1406.4.6 WHEN OTHERS的处理代码 1426.5 构建一个有效的错误管理架构 1446.5.1 确定异常管理策略 1456.5.2 组织好对套用专有错误代码的使用 1486.5.3 使用标準化的错误管理程式 1496.5.4 使用自己的异常对象 1516.5.5 创建通用错误处理的标準模板 1536.6 充分利用PL/SQL错误管理 155第3部分 PL/SQL数据第7章 使用数据 1597.1 程式数据的命名 1597.2 PL/SQL数据类型概述 1617.2.1 字元数据 1627.2.2 数字 1627.2.3 日期、时间戳和时间间隔 1637.2.4 布尔类型 1647.2.5 二进制数据类型 1647.2.6 ROWIDs 1657.2.7 REF CURSORs 1657.2.8 Internet数据类型 1657.2.9 “Any”数据类型 1667.2.10 用户定义数据类型 1667.3 程式数据的声明 1667.3.1 声明一个变数 1677.3.2 声明常量 1687.3.3 NOT NULL语句 1687.3.4 锚定声明 1687.3.5 游标和表的锚 1707.3.6 使用锚定声明的好处 1717.3.7 NOT NULL数据类型的锚 1727.4 程式设计师定义的子类型 1737.5 数据类型转换 1747.5.1 隐式类型转换 1747.5.2 显式类型转换 176第8章 字元串 1828.1 字元串类型 1828.1.1 VARCHAR2数据类型 1838.1.2 CHAR数据类型 1848.1.3 String子类型 1858.2 使用字元串 1868.2.1 字元串常量 1868.2.2 不可列印字元 1878.2.3 拼接字元串 1888.2.4 处理大小写 1898.2.5 传统的检索、提取和替换 1928.2.6 补齐 1948.2.7 正则表达式的检索、提取和替换 197 8.2.8 使用空字元串 2088.2.9 混用CHAR和VARCHAR2 2108.3 字元串函式快速参考 212第9章 数字 2219.1 数值型数字类型 2219.1.1 NUMBER类型 2229.1.2 PLS_INTEGER类型 2279.1.3 BINARY_INTEGER类型 2289.1.4 SIMPLE_INTEGER类型 2289.1.5 BINARY_FLOAT和BINARY_DOUBLE类型 2309.1.6 SIMPLE_FLOAT和SIMPLE_DOUBLE类型 2359.1.7 数字子类型 2359.2 数字转换 2379.2.1 TO_NUMBER函式 2379.2.2 TO_CHAR函式 2409.2.3 CAST函式 2469.2.4 隐式转换 2469.3 数字运算符 2489.4 数字函式 2499.4.1 四捨五入和截断函式 2499.4.2 三角函式 2509.4.3 数字函式的快速参考 250第10章 日期和时间戳 25510.1 Datatime数据类型 25510.1.1 声明日期时间变数 25810.1.2 选择日期时间数据类型 25910.2 得到当前日期和时间 25910.3 INTERVAL数据类型 26210.3.1 声明INTERVAL变数 26310.3.2 什幺时候使用INTERVAL 26410.4 日期时间转换 26610.4.1 从字元串到日期时间 26610.4.2 从日期时间到字元串 26910.4.3 使用时区 27110.4.4 精确匹配需要格式掩码 27410.4.5 让精确匹配更容易 27510.4.6 解释滑动视窗中两位数字的年份 27510.4.7 把时区转换成字元串 27610.4.8 用填充模式把输出补齐 27710.5 日期和时间戳直接量 27810.6 时间间隔的转换 27910.6.1 从数字到时间间隔的转换 28010.6.2 把字元串转换成间隔 28110.6.3 时间间隔的格式化显示 28110.7 时间间隔直接量 28210.8 CAST和EXTRACT 28410.8.1 CAST函式 28410.8.2 EXTRACT函式 28510.9 日期时间的算法 28610.9.1 时间间隔和日期时间的算法 286 10.9.2 DATE数据类型的日期算法 28710.9.3 计算两个日期时间之间的时间间隔 28810.9.4 DATE和TIMESTAMP混合计算 29010.9.5 时间间隔的加减运算 29110.9.6 时间间隔的乘除运算 29210.9.7 使用不受限制的时间间隔类型 29310.10 日期/时间函式的快速参考 294第11章 记录类型 29711.1 PL/SQL中的记录 29711.1.1 使用记录的好处 29811.1.2 声明记录 30011.1.3 程式设计师自定义的记录类型 30111.1.4 使用记录类型 30411.1.5 记录的比较 31011.1.6 触发器伪记录 311第12章 集合 31312.1 集合概述 31412.1.1 集合概念和术语 31412.1.2 集合类型 31612.1.3 集合示例 31712.1.4 使用集合的场合 32112.1.5 选择一个集合类型 32612.2 集合方法(内置) 32712.2.1 COUNT方法 32812.2.2 DELETE方法 32912.2.3 EXISTS方法 33012.2.4 EXTEND方法 33112.2.5 FIRST和LAST方法 33212.2.6 LIMIT方法 33312.2.7 PRIOR和NEXT方法 33312.2.8 TRIM方法 33412.3 使用集合 33512.3.1 声明集合类型 33612.3.2 集合变数的声明和初始化 34012.3.3 用数据填充集合 34512.3.4 访问集合内的数据 35012.3.5 使用字元串索引的集合 35012.3.6 複杂数据类型的集合 35612.3.7 多级集合 35912.3.8 在SQL中使用集合 36712.4 嵌套表的多重集合操作 37212.4.1 测试嵌套表是否相等及成员属性 37412.4.2 检查元素是否是嵌套表的成员 37512.4.3 执行高级集合操作 37612.4.4 处理嵌套表中的重複数据 37712.5 模式级别集合的维护 37912.5.1 必需的许可权 37912.5.2 集合和数据字典 379第13章 其他数据类型 38113.1 BOLEAN类型 38113.2 RAW数据类型 38213.3 UROWID和ROWID数据类型 38313.3.1 获得ROWID 38413.3.2 使用ROWID 384 13.4 LOB数据类型 38613.5 使用LOB 38713.5.1 理解LOB定位符 38913.5.2 LOB的空和NULL 39013.5.3 向LOB中写入数据 39213.5.4 读取LOB数据 39513.5.5 BFILE不同于其他 39613.5.6 SecureFiles和BasicFiles 40113.5.7 临时LOB 40313.5.8 原生的LOB操作 40613.5.9 LOB转换函式 41013.6 预定义的对象类型 41113.6.1 XMLType类型 41113.6.2 URI类型 41513.6.3 Any类型 417第4部分 PL/SQL中的SQL第14章 DML和事务管理 42314.1 PL/SQL中的DML 42414.1.1 DML语句的快速入门 42414.1.2 DML操作的游标属性 42814.1.3 从DML语句返回信息 42914.1.4 DML和异常处理 43014.1.5 DML和记录 43114.2 事务管理 43414.2.1 COMMIT语句 43414.2.2 ROLLBACK语句 43514.2.3 SAVEPOINT语句 43614.2.4 SET TRANSACTION命令 43614.2.5 LOCK TABLE语句 43714.3 自治事务 43814.3.1 定义自治事务 43814.3.2 自治事务的规则和限制 43914.3.3 事务的可见性 44014.3.4 什幺时候使用自治事务 44014.3.5 构建一个自治的日誌机制 441第15章 数据提取 44415.1 游标基础 44515.1.1 一些有关数据提取的术语 44615.1.2 典型的查询操作 44715.1.3 游标属性介绍 44815.1.4 在游标中使用PL/SQL变数 45115.1.5 在显式游标和隐式游标间做选择 45115.2 使用隐式游标 45215.2.1 隐式游标的例子 45315.2.2 隐式游标的异常处理 45415.2.3 隐式SQL的游标属性 45615.3 使用显式游标 45815.3.1 声明显式游标 45915.3.2 打开显式游标 46215.3.3 从显式游标中提取数据 46315.3.4 显式游标中的列别名 46415.3.5 关闭显式游标 46515.3.6 显式游标的属性 467 15.3.7 游标参数 46915.4 SELECT…FOR UPDATE 47215.4.1 用COMMIT释放锁资源 47315.4.2 WHERE CURRENT OF语句 47415.5 游标变数和REF CURSOR 47515.5.1 为什幺用游标变数 47615.5.2 和静态游标的相同点 47715.5.3 声明REF CURSOR类型 47815.5.4 声明游标变数 47815.5.5 打开游标变数 47915.5.6 从一个游标变数获取数据 48015.5.7 游标变数的使用规则 48315.5.8 游标变数作为参数传递 48615.5.9 游标变数的约束限制 48815.6 游标表达式 48815.6.1 使用游标表示式 48915.6.2 游标表达式的约束限制 491第16章 动态SQL和动态PL/SQL 49216.1 NDS语句 49316.1.1 EXECUTE IMMEDIATE语句 49316.1.2 OPEN FOR语句 49616.1.3 4种动态SQL方法 50216.2 绑定变数 50316.2.1 参数模式 50416.2.2 重複的占位符 50616.2.3 NULL值的传递 50716.3 使用对象和集合 50816.4 动态PL/SQL 51016.4.1 构建动态PL/SQL块 51116.4.2 用动态块替换重複的代码 51316.5 NDS的建议 51316.5.1 对于共享的程式使用调用者许可权 51416.5.2 预估并处理动态的错误 51416.5.3 使用绑定而不是拼接 51616.5.4 把代码注入的风险最小化 51816.6 什幺时候使用DBMS_SQL 52116.6.1 解析非常长的字元串 52116.6.2 得到查询的列的信息 52216.6.3 实现第4种方法的动态SQL的需求 52416.6.4 把动态游标的解析最小化 53016.7 Oracle资料库11g新特性 53216.7.1 DBMS_SQL TO_REFCURSOR函式 53216.7.2 DBMS_SQL TO_CURSOR函式 53416.7.3 DBMS_SQL的安全性增强 536Oracle PL/SQL程式设计(第5版)(下册)目录:第5部分 构造PL/SQL应用程式第17章 过程、函式与参数 543 17.1 代码模组化 54317.2 过程 54517.2.1 调用一个过程 54717.2.2 过程的头部 54817.2.3 过程体 54817.2.4 END标籤 54817.2.5 RETURN语句 54917.3 函式 54917.3.1 函式的结构 54917.3.2 返回的数据类型 55217.3.3 END标籤 55217.3.4 调用函式 55317.3.5 不带参数的函式 55417.3.6 函式的头部 55417.3.7 函式体 55517.3.8 RETURN语句 55517.4 参数 55717.4.1 定义参数 55817.4.2 形参和实参 55817.4.3 参数模式 55917.4.4 在PL/SQL中明确地把形参和实参关联在一起 56217.4.5 NOCOPY参数模式限定符 56617.4.6 预设值 56617.5 局部或者嵌套模组 56717.5.1 使用局部模组的好处 56817.5.2 局部模组的作用範围 57117.5.3 用局部模组让我们的代码更整洁 57117.6 模组重载 57217.6.1 使用重载的好处 57317.6.2 重载的限制 57617.6.3 关于数字类型的重载 57617.7 前置声明 57717.8 高级主题 57917.8.1 在SQL中调用我们的函式 57917.8.2 表函式 58117.8.3 确定性函式 59117.9 把模组化进行到底 592第18章 包 59318.1 为什幺是包? 59318.1.1 演示包的能力 59418.1.2 有关包的一些概念 59718.1.3 图示私有性 59918.2 构建包的规则 59918.2.1 包规範 60018.2.2 包体 60118.2.3 包的初始化 60318.3 包成员的调用规则 60718.4 使用包数据 60818.4.1 在一个Oracle会话内全局可见 60918.4.2 全局公有数据 60918.4.3 包游标 61018.4.4 包的串列化 61418.5 何时使用包 61718.5.1 封装对数据的访问 61718.5.2 避免直接量的硬编码 62018.5.3 改善内置特性的可用性 62218.5.4 把逻辑上相关的功能组织在一起 62318.5.5 快取静态的会话数据 62418.6 包和对象类型 624第19章 触发器 62619.1 DML触发器 62719.1.1 DML触发器的概念 62819.1.2 创建DML触发器 630 19.1.3 DML触发器的例子:不许作弊! 63519.1.4 同一类型的多个触发器 64119.1.5 何去何从 64219.1.6 突变表的错误 64419.1.7 複合触发器:聚集一堂 64519.2 DDL触发器 64819.2.1 创建DDL触发器 64919.2.2 可用事件 65119.2.3 可用属性 65219.2.4 使用事件和属性 65319.2.5 删除不可删除的 65719.2.6 INSTEAD OF CREATE 触发器 65719.3 资料库事件触发器 65919.3.1 创建资料库事件触发器 65919.3.2 STARTUP触发器 66019.3.3 SHUTDOWN触发器 66119.3.4 LOGON触发器 66119.3.5 LOGOFF触发器 66119.3.6 SERVERERROR触发器 66219.4 INSTEAD OF触发器 66619.4.1 创建INSTEAD OF触发器 66619.4.2 INSTEAD OF INSERT触发器 66819.4.3 INSTEAD OF UPDATE触发器 67019.4.4 INSTEAD OF DELETE触发器 67119.4.5 填充表 67119.4.6 嵌套表的INSTEAD OF触发器 67219.5 AFTER SUSPEND触发器 67419.5.1 构建AFTER SUSPEND触发器 67419.5.2 看看真实的触发器 67619.5.3 ORA_SPACE_ERROR_INFO函式 67719.5.4 DBMS_RESUMABLE包 67819.5.5 捕获多个时间 67919.5.6 该不该处理? 68019.6 管理触发器 68019.6.1 禁用、启用以及删除触发器 68019.6.2 创建一个禁用的触发器 68119.6.3 查看触发器 68219.6.4 检查触发器的有效性 684第20章 管理PL/SQL代码 68520.1 管理资料库内的代码 68620.1.1 数据字典视图概述 68720.1.2 显示存储对象的信息 68820.1.3 原始码的显示和搜寻 68920.1.4 根据程式的大小确定Pinning需求 69120.1.5 获得存储代码的属性 69220.1.6 通过视图分析和更改触发器状态 69320.1.7 分析参数信息 69320.1.8 分析标识符的使用(Oracle 资料库11g的PL/Scope) 695 20.2 依赖关係的管理以及代码的重编译 69720.2.1 通过数据字典视图分析依赖关係 69820.2.2 细粒度依赖(Oracle资料库11g) 70220.2.3 远程依赖 70320.2.4 Oracle的远程调用模式的限制 70620.2.5 失效的程式单元的重编译 70720.3 编译时刻警告 71120.3.1 一个入门例子 71120.3.2 启用编译时刻警告 71220.3.3 一些有用的警告 71420.4 PL/SQL程式的测试 72220.4.1 典型的、华而不实的测试技术 72320.4.2 PL/SQL代码测试的一般建议 72620.4.3 PL/SQL的自动测试选项 72720.4.4 用utPLSQL测试 72820.4.5 用Quest Code Tester for Oracle测试 73020.5 跟蹤PL/SQL的执行 73220.5.1 DBMS_APPLICATION_INFO 73420.5.2 Quest Error Manager跟蹤 73620.5.3 DBMS_TRACE功能 73820.6 PL/SQL程式的调试 74120.6.1 错误的调试方法 74120.6.2 调试技巧和策略 74320.7 保护存储过程代码 74720.7.1 包装的约束和限制 74720.7.2 使用包装功能 74820.7.3 通过DBMS_DDL动态包装 74820.7.4 包装过的代码的使用指南 74920.8 基于版本的重定义(Oracle资料库11g R2版本) 750第21章 PL/SQL的性能最佳化 75321.1 辅助最佳化的工具 75421.1.1 记忆体使用分析 75521.1.2 发现PL/SQL代码中的瓶颈所在 75521.1.3 计算消耗时间 76021.1.4 选择最快的程式 76221.1.5 避免无限循环 76321.1.6 性能相关警告 76421.2 最佳化过的编译器 76521.2.1 最佳化器的工作原理 76621.2.2 循环Fetch操作的运行时最佳化 76921.3 数据快取技术 77021.3.1 基于包的快取 77121.3.2 确定性函式的快取 77621.3.3 函式结果快取(Oracle资料库11g) 77821.3.4 快取总结 79021.4 多行SQL的批处理 79021.4.1 通过BULK COLLECT加速查询 79221.4.2 通过FORALL加速DML 79821.5 利用管道化的表函式提升性能 808 21.5.1 用基于管道化函式的载入方式替换基于行的插入 80921.5.2 用管道函式调优Merge操作 81621.5.3 用并行管道函式进行异步的数据卸载 81821.5.4 并行管道函式中的分区子句和流子句对性能的影响 82221.5.5 管道函式和基于成本的最佳化器 82321.5.6 用管道函式最佳化複杂的数据载入 82921.5.7 管道函式结束语 83621.6 专用的最佳化技术 83721.6.1 使用NOCOPY参数模式提示符 83721.6.2 使用正确的数据类型 84021.7 回顾性能 841第22章 I/O操作和PL/SQL 84322.1 显示信息 84322.1.1 启用DBMS_OUTPUT 84422.1.2 向快取中写入行 84422.1.3 从快取中读取内容 84522.2 档案的读写 84622.2.1 UTL_FILE_DIR参数 84722.2.2 使用Oracle目录 84822.2.3 打开档案 85022.2.4 档案已经打开了吗? 85222.2.5 关闭档案 85222.2.6 读取档案 85322.2.7 向档案中写 85522.2.8 拷贝档案 85822.2.9 删除档案 85922.2.10 档案改名和档案移动 85922.2.11 提取档案属性 86022.3 传送邮件 86122.3.1 Oracle的前提条件 86222.3.2 配置网路安全 86322.3.3 传送一个短的(32 767或者更少)的纯文本讯息 86322.3.4 在邮件地址中加上“友好”的名字 86522.3.5 传送任意长度的纯文本讯息 86622.3.6 传送带有小附属档案(32 767)的讯息 86722.3.7 以附属档案形式传送一个小档案(32 767) 86922.3.8 任意大小的附属档案 87022.4 使用Web数据(HTTP) 87222.4.1 “分片”获得一个Web页面 87322.4.2 把页面提取到一个LOB中 87422.4.3 使用HTTP的用户名/密码验证 87522.4.4 获取一个SSL加密的Web页面(通过HTTPS) 87622.4.5 通过GET或者POST给一个Web页面提交数据 87722.4.6 禁用Cookies或者Cookies持久化 88122.4.7 从FTP伺服器获取数据 88122.4.8 使用代理伺服器 88222.5 PL/SQL中可用的其他I/O类型 88222.5.1 资料库管道、伫列、告警 88322.5.2 TCP Socket 883 22.5.3 Oracle的内置Web伺服器 883第6部分 高级PL/SQL主题第23章 套用安全与PL/SQL 88723.1 安全概述 88723.2 加密 88823.2.1 密钥长度 89023.2.2 算法 89023.2.3 填补和连线 89223.2.4 DBMS_CRYPTO包 89223.2.5 数据加密 89423.2.6 LOB的加密 89723.2.7 安全档案 89723.2.8 数据解密 89823.2.9 生成密钥 89923.2.10 密钥管理 90023.2.11 加密散列 90523.2.12 使用讯息验证码 90723.2.13 使用透明数据加密(TDE) 90823.2.14 透明的表空间加密 91023.3 行级安全 91223.3.1 为什幺要学习RLS 91423.3.2 一个简单的RLS示例 91523.3.3 使用动态策略 91923.3.4 使用列敏感的RLS 92323.3.5 RLS调试 92723.4 应用程式上下文 93023.4.1 使用应用程式上下文 93123.4.2 上下文的安全 93223.4.3 把上下文用作RLS的谓词条件 93323.4.4 识别出非资料库的用户 93623.5 细粒度审计 93823.5.1 为什幺要学习FGA 93923.5.2 一个简单的FGA示例 94023.5.3 访问多少列 94223.5.4 查看审计跟蹤信息 94323.5.5 使用绑定变数 94323.5.6 使用句柄模组 945第24章 PL/SQL架构 94724.1 DIANA是谁(或者是什幺) 94724.2 Oracle是如何执行PL/SQL代码的 94824.2.1 一个例子 94924.2.2 编译器的限制 95224.3 PL/SQL的预设包 95224.4 执行许可权模型 95524.4.1 定义者许可权模型 95624.4.2 调用者许可权模式 96024.4.3 组合许可权模型 96224.5 条件编译 96324.5.1 条件编译的例子 96424.5.2 查询指令 96524.5.3 $IF指令 96824.5.4 $ERROR指令 97024.5.5 把代码和包常量同步 97024.5.6 用查询指令实现程式专有设定 97124.5.7 使用预处理后的代码 97224.6 PL/SQL和资料库实例记忆体 97424.6.1 PGA、UGA和CGA 974 24.6.2 游标、记忆体及其他 97524.6.3 减少记忆体用的技巧 97724.6.4 如果记忆体用光了该怎幺办 98724.7 原生式编译 99024.7.1 什幺时候使用解释模式 99024.7.2 什幺时候使用原生模式 99124.7.3 原生编译和资料库版本 99124.8 我们需要知道的 991第25章 PL/SQL的全球化和本地化 99325.1 概述和术语 99525.2 Unicode入门 99625.2.1 国家字元集的数据类型 99825.2.2 字元编码 99825.2.3 和全球化支持相关的参数 99925.2.4 Unicode 函式 100025.3 字元语义 100725.4 字元串排序顺序 101125.4.1 二进制排序 101225.4.2 单语言排序 101325.4.3 多语言排序 101525.5 多语言信息检索 101625.5.1 信息检索和PL/SQL 101825.6 日期/时间 102125.6.1 时间戳数据类型 102125.6.2 日期/时间格式 102225.7 货币转换 102625.8 PL/SQL的全球化开发工具箱 102825.8.1 UTL_I18N工具包 102825.8.2 UTL_LMS异常处理包 103125.8.3 GDK实现选项 1032第26章 PL/SQL的面向对象特性 103426.1 Oracle对象特性的介绍 103426.2 对象类型示例 103626.2.1 创建一个基类 103726.2.2 创建子类型 103926.2.3 方法 104026.2.4 在Oracle资料库11g中调用父类的方法 104526.2.5 保存、提取、使用持久化对象 104626.2.6 演变和创建 105426.2.7 回到指针吗? 105626.2.8 泛化数据:ANY类型 106326.2.9 我也可以自己做 106726.2.10 对象的比较 107126.3 对象视图 107526.3.1 一个示例的关係系统 107726.3.2 带有集合属性的对象视图 107826.3.3 对象子视图 108126.3.4 带有反关係的对象视图 108326.3.5 INSTEAD OF触发器 108426.3.6 对象视图和对象表的区别 108626.4 维护对象类型和对象视图 1087 26.4.1 数据字典 108726.4.2 许可权 108926.5 来自一个关係开发者的总结思考 1091附录A 正则表达式的元字元和函式参数 1093A.1 元字元 1093A.2 函式和参数 1096A.2.1 正则表达式函式 1096A.2.2 正则表达式参数 1097附录B 数字格式模型 1099附录C 日期格式模型 1102