书籍详情
剑破冰山:Oracle开发艺术
作者:卢涛主编,苏旭晖 丁俊 副主编,梁敬彬 王保强 怀敬明 贾书民 编著
出版社:电子工业出版社
出版时间:2011-01-01
ISBN:9787121120756
定价:¥69.00
购买这本书可以去
内容简介
Oracle数据库是目前市场占有率最高的商业数据库,功能非常强大,随着Oracle管理工具的智能化,如Oracle EM提供了强大的管理和调优功能,Oracle DBA的管理工作逐渐趋于简单化。正因为如此,当前国内Oracle开发人员的岗位需求大幅度增加,投身Oracle开发的人数也日益增多。一个好的0racIe开发人员不仅要知道一些基本语法和常见用法,还需要知道何时用、如何用、怎么避免相关误区、写出高质量的代码。《剑破冰山:Oracle开发艺术》面向有0racle使用经验或有其他数据库使用经验的人,重点讲述利用好Oracle的特色功能进行高效开发的思路和技巧,帮助读者快速掌握中高级Oracle开发技术。《剑破冰山:Oracle开发艺术》主要覆盖0racle开发必备的重要知识点:数据库编程规范、Oracle开发常用工具及使用、MERGE方法、神秘的NULL和讨厌的CHAR、扩展GROUPBY、Oracle自动类型转换、Oracle分析函数、Oracle层次查询、llgR2新特性之递归WITH编程、动态SQL扩展。此外还有大量案例:Where In List问题解析,数据库设计和大数据量处理、数据审核、号段选取应用、分析SQL执行计划的关注点、Oracle开发误区探索、提升PL/SQL开发性能漫谈、管道函数的学习与实战应用、巧用锁特性避免重复启动同一程序、不可能的任务?超越Oracle等。《剑破冰山:Oracle开发艺术》作者均有多年Oracle开发管理实战经验,他们期望以自己的经验和教训,分享分析和解决问题的方法,探讨如何用相关的技术去解决特定的需求。希望读者在看完《剑破冰山:Oracle开发艺术》后,能受到良好的启迪,进而能极大地提升自己在Oracl数据库开发方面的能力!
作者简介
卢涛,ITPUB Oracle开发版版主,15年IT工作经,2004年任高级工程师,在某数据管理中心任职系统分析师;曾参与数次全国数据处理系统的设计与实现。在软件开发、数据库开发和优化、系统架构、项目管理方面有一定研究。王保强,ITPUB数据仓库和MS SQL Setver版版主,曾获1TPUB最佳博客和ITPUB数据库大版最佳版主。11年IT工作经验,曾在多家国内外IT知名企业任职,在数据库开发和优化、数据仓库、系统架构、项目管理、Web20方面有一定研究。怀晓明,ITPUB 0racIe开发版等版块版主,获得第一届ITPUB最佳建议奖。在多个大型IT企业多年的工作历练中,积累了大量的系统架构设计经验,擅长数据库和Web的设计、开发,精于故障诊断与处理,具有丰富的省部级电子政务行业工作经验及项目管理经验。贾书民,1988年毕业于中国人民大学信息系,1991年获得高级程序员资格,1998年任高级IT程师。多年来,从事UNIX系统管理、数据库系统管理与设计、统计数据处理软件开发等工作,主持了河北省多项大型普查的数据处理工作,曾参加了多个国家级项目的设计和开发。
目录
第1章 大话数据库编程规范\t1
1.1 编程规范概述\t1
1.2 书写规范\t2
1.2.1 大小写风格\t2
1.2.2 缩进风格\t2
1.2.3 空格及换行\t3
1.2.4 其他\t4
1.3 命名规范\t4
1.3.1 表和字段命名规范\t4
1.3.2 其他对象命名\t5
1.4 变量命名\t7
1.5 注释规范\t8
1.6 语法规范\t9
1.7 脚本规范\t12
规则1.7.1\t13
规则1.7.2\t13
规则1.7.3\t13
第2章 Oracle开发常用工具及使用\t14
2.1 AWR工具与性能优化\t14
2.1.1 AWR介绍\t14
2.1.2 AWR的安装与配置\t15
2.1.3 AWR报表使用\t15
2.1.4 分析AWR报表基本思路\t17
2.1.5 案例\t17
2.2 SQL_TRACE/10046事件\t24
2.2.1 SQL_TRACE/10046事件是什么\t24
2.2.2 总体流程介绍\t24
2.2.3 SQL_TRACE/10046事件具体使用方法\t24
2.2.4 案例分析\t28
2.2.5 小结\t32
2.3 计时和剖析工具\t32
2.3.1 PLSQL_PROFILER概述\t34
2.3.2 剖析举例\t37
2.3.3 安全性\t45
第3章 探索MERGE方法\t46
3.1 MERGE是什么\t46
3.2 Oracle 10g中MERGE的完善\t48
3.2.1 UPDATE和INSERT动作可只出现其一\t48
3.2.2 可对MERGE语句加条件\t48
3.2.3 可用DELETE子句清除行\t49
3.2.4 可采用无条件方式INSERT\t49
3.3 MERGE误区探索\t49
3.3.1 无法在源表中获得一组稳定的行\t49
3.3.2 DELETE子句的WHERE顺序必须在最后\t51
3.3.3 DELETE 子句只可以删除目标表,而无法删除源表\t52
3.3.4 更新同一张表的数据,需担心USING的空值\t53
3.4 MERGE的巧妙运用\t54
第4章 神秘的NULL和令人讨厌的CHAR\t58
4.1 神秘的NULL\t59
4.1.1 NULL概述\t59
4.1.2 NULL与函数\t64
4.1.3 NULL与索引\t79
4.1.4 NULL与SQL\t87
4.1.5 NULL与PL/SQL\t97
4.1.6 再谈NULL和空字符串区别\t101
4.1.7 NULL总结\t101
4.2 令人讨厌的CHAR\t102
4.2.1 CHAR与VARCHAR2基础\t102
4.2.2 CHAR与SQL\t105
4.2.3 CHAR与绑定变量\t109
4.2.4 CHAR与PL/SQL\t111
4.2.5 CHAR总结\t112
第5章 报表开发之扩展GROUP BY\t113
5.1 扩展GROUP BY概述\t113
5.2 ROLLUP\t114
5.2.1 UNION ALL实现ROLLUP功能\t114
5.2.2 ROLLUP分组\t116
5.2.3 部分ROLLUP分组\t120
5.2.4 ROLLUP总结\t121
5.3 CUBE\t121
5.3.1 CUBE分组\t121
5.3.2 部分CUBE分组\t123
5.3.3 CUBE总结\t124
5.4 GROUPING SETS实现小计\t124
5.4.1 GROUPING SETS分组\t124
5.4.2 部分GROUPING SETS分组\t126
5.4.3 CUBE、ROLLUP作为GROUPING SETS的参数\t126
5.4.4 GROUPING SETS总结\t128
5.5 组合列分组、连接分组、重复列分组\t128
5.5.1 组合列分组\t130
5.5.2 连接分组\t132
5.5.3 重复列分组\t134
5.5.4 组合列分组、连接分组、重复列分组总结\t134
5.6 3个扩展分组函数:GROUPING、GROUPING_ID、GROUP_ID\t135
5.6.1 GROUPING函数\t135
5.6.2 GROUPING_ID函数\t138
5.6.3 GROUP_ID函数\t142
5.6.4 扩展GROUP BY函数总结\t144
5.7 扩展分组综合实例\t144
第6章 探索Oracle自动类型转换\t149
6.1 为什么不建议使用自动类型转换\t150
6.2 自动类型转换规则\t156
6.3 自动类型转换常见错误\t166
第7章 Where in list问题解析\t169
7.1 问题引入:动态SQL构造\t170
7.2 使用正则表达式解决\t172
7.3 使用常规字符串函数及动态视图\t173
7.4 使用集合构造伪表\t176
7.5 Where in list性能问题\t178
7.6 Where in list问题总结\t188
第8章 例说数据库表设计和大量数据处理方法\t189
8.1 根据业务需求规划表结构\t189
8.2 主键的确定\t195
8.3 表的拆分、合并及数据的规范和反规范化\t199
8.4 数据类型的选择\t199
8.5 表的分区\t203
8.6 表的压缩\t203
8.7 抽取数据\t205
8.7.1 利用SQL*PLUS的SPOOL功能\t205
8.7.2 利用UTL_FILE\t207
8.7.3 利用第三方工具\t207
8.8 转换数据\t207
8.8.1 数据的增删改\t208
8.8.2 数据汇总\t211
8.9 加载数据\t227
8.9.1 利用SQLLDR加载\t227
8.9.2 利用外部表加载\t229
8.9.3 利用数据库链接加载\t233
8.9.4 利用分区交换技术加载\t234
8.10 逻辑导入/导出数据\t240
第9章 数据审核\t242
9.1 审核的分类\t242
9.2 列审核设计\t243
9.2.1 直接使用SQL语句\t245
9.2.2 提高审核效率\t248
9.2.3 管理审核关系\t254
9.2.4 单个列的复杂审核\t257
9.3 行审核设计\t258
9.3.1 重码的审核\t259
9.3.2 直接使用SQL语句\t260
9.3.3 管理审核关系\t261
9.3.4 行间包含四则运算的审核思路\t266
9.3.5 更复杂的行间审核思路\t267
9.4 小结\t267
第10章 趣谈Oracle分析函数\t269
10.1 概述\t269
10.2 函数语法\t270
10.3 函数列表\t276
10.4 函数用法\t277
10.4.1 最常见的分析函数应用场景\t279
10.4.2 ROWS的具体用法\t280
10.4.3 RANGE的具体用法\t281
10.4.4 KEEP的用法\t283
10.5 函数功能详解\t284
10.5.1 统计函数\t284
10.5.2 排序函数\t285
10.5.3 数据分布函数\t287
10.5.4 统计分析函数\t289
10.6 分析函数在BI及统计上的应用\t290
10.6.1 现状分析\t290
10.6.2 发展分析\t297
10.7 自定义聚集函数\t298
10.7.1 自定义聚集函数接口简介\t298
10.7.2 应用场景一:字符串聚集\t299
10.7.3 应用场景二:指数移动平均线\t301
第11章 Oracle层次查询\t305
11.1 概述\t305
11.2 样例数据\t306
11.3 CONNECT BY和START WITH查询\t306
11.3.1 概述\t306
11.3.2 基本语法\t306
11.3.3 样例\t308
11.4 SYS_CONNECT_BY_PATH函数\t313
11.5 WMSYS.WM_CONCAT非公开函数\t314
第12章 号段选取应用\t316
12.1 问题的提出\t316
12.2 相关基础知识\t317
12.2.1 伪列rownum和level\t317
12.2.2 利用层次查询构造连续的数\t317
12.2.3 用lead和lag获得相邻行的字段值\t318
12.3 解决问题\t320
12.3.1 已知号码求号段\t320
12.3.2 根据号段求出包含的数\t324
12.3.3 求缺失的号\t326
12.3.4 求尚未使用的号段\t330
12.4 小结\t334
第13章 分析SQL执行计划的关注点\t335
13.1 返回行与逻辑读的比率\t335
13.2 聚合查询\t338
13.3 返回行的数量\t341
13.4 Oracle预测行准确与否\t342
13.5 Predicate Information\t346
13.6 动态采样\t348
13.7 谁是主要矛盾\t349
第14章 Oracle开发误区探索\t352
14.1 避免对列运算\t352
14.2 消除隐式转换\t354
14.3 关注空格\t354
14.4 存储过程与权限\t355
14.5 提防DDL提交事务\t357
14.6 Insert into 错误\t359
14.7 关于or\t360
14.8 sequence中的cache\t361
14.9 树形查询易错处\t364
14.10 小心保留字\t367
14.11 函数索引陷阱\t371
14.12 外连接陷阱\t374
14.13 标量子查询\t375
第15章 提升PL/SQL开发性能漫谈\t378
15.1 重视解析\t378
15.1.1 触发器尽量考虑内部代码过程封装\t378
15.1.2 避免动态SQL\t380
15.1.3 OLTP系统中尽量使用绑定变量\t382
15.2 关注调用\t384
15.2.1 减少对sysdate的调用\t384
15.2.2 避免对mod函数的调用\t385
15.2.3 设法减少表扫描次数\t386
15.2.4 避免SQL中的函数调用\t391
15.3 简洁为王\t395
15.3.1 尽量用简单SQL替代PL/SQL逻辑\t395
15.3.2 避免不必要的排序\t397
15.3.3 利用Oracle现有功能\t399
15.4 细致入微\t400
15.4.1 使用pls_integer类型\t400
15.4.2 避免数据类型转换\t400
15.4.3 IF的顺序有讲究\t402
15.4.4 设计开发对列是否为空慎重决定\t404
15.4.5 分布式应用开发不可不知的HINT(driving_site)\t407
第16章 管道函数的学习与实战应用\t410
16.1 管道函数编写要点\t410
16.2 功能描述及案例\t411
16.2.1 可直接用TABLE()操作符方式输出结果集\t411
16.2.2 结果集可作为表来使用,直接和其他表相关联\t411
16.2.3 实现实时跟踪\t412
16.3 管道函数注意点\t414
16.3.1 清楚管道函数只是表函数的一种\t414
16.3.2 管道函数与DML\t415
16.3.3 管道函数集合的限制\t416
16.3.4 与管道函数相关的异常NO_DATA_NEEDED\t417
第17章 巧用锁特性避免重复启动同一程序\t420
17.1 基本技巧介绍\t420
17.2 原理介绍\t422
17.3 程序代码\t423
17.4 测试\t426
17.5 需要注意的点\t427
第18章 11g R2 新特性之递归with编程精粹\t428
18.1 上下级关系\t429
18.2 构造数列\t435
18.3 排列组合问题\t441
18.4 沿路径计算\t457
18.5 国际SQL挑战赛\t473
第19章 不可能的任务?超越Oracle\t479
19.1 为何选择cube\t480
19.1.1 cube简介\t480
19.1.2 cube优势\t480
19.1.3 测试环境\t481
19.2 newkid的设计思路和优化步骤\t482
19.2.1 一次扫描求出16种分组\t482
19.2.2 一次扫描求出1种分组,并基于此再一次扫描求出其余分组\t484
19.2.3 一次扫描求出1种分组,并基于此再多次分层累计求出其余分组\t485
19.2.4 变量长度和类型的优化\t487
19.3 为何选择OCI\t488
19.3.1 汇总算法的翻译和改进\t488
19.3.2 输入和输出的实现和改进\t489
19.3.3 不要忽视物理存储对数据库操作的影响\t490
19.3.4 不成功的优化教训\t490
19.4 总结\t493
第20章 动态SQL扩展\t494
20.1 动态SQL用途和应用场景\t494
20.2 EXECUTE IMMEDIATE语法\t495
20.2.1 执行DDL、DCL语句\t495
20.2.2 构造通用SQL处理\t496
20.2.3 执行复杂业务逻辑查询\t498
20.2.4 绑定变量\t502
20.2.5 BULK COLLECT动态SQL\t505
20.3 使用DBMS_SQL包\t507
20.3.1 DBMS_SQL函数和过程说明\t507
20.3.2 DBMS_SQL执行步骤\t508
20.3.3 DBMS_SQL应用场景\t509
20.3.4 DBMS_SQL与EXECUTE IMMEDIATE比较\t509
后记\t511
1.1 编程规范概述\t1
1.2 书写规范\t2
1.2.1 大小写风格\t2
1.2.2 缩进风格\t2
1.2.3 空格及换行\t3
1.2.4 其他\t4
1.3 命名规范\t4
1.3.1 表和字段命名规范\t4
1.3.2 其他对象命名\t5
1.4 变量命名\t7
1.5 注释规范\t8
1.6 语法规范\t9
1.7 脚本规范\t12
规则1.7.1\t13
规则1.7.2\t13
规则1.7.3\t13
第2章 Oracle开发常用工具及使用\t14
2.1 AWR工具与性能优化\t14
2.1.1 AWR介绍\t14
2.1.2 AWR的安装与配置\t15
2.1.3 AWR报表使用\t15
2.1.4 分析AWR报表基本思路\t17
2.1.5 案例\t17
2.2 SQL_TRACE/10046事件\t24
2.2.1 SQL_TRACE/10046事件是什么\t24
2.2.2 总体流程介绍\t24
2.2.3 SQL_TRACE/10046事件具体使用方法\t24
2.2.4 案例分析\t28
2.2.5 小结\t32
2.3 计时和剖析工具\t32
2.3.1 PLSQL_PROFILER概述\t34
2.3.2 剖析举例\t37
2.3.3 安全性\t45
第3章 探索MERGE方法\t46
3.1 MERGE是什么\t46
3.2 Oracle 10g中MERGE的完善\t48
3.2.1 UPDATE和INSERT动作可只出现其一\t48
3.2.2 可对MERGE语句加条件\t48
3.2.3 可用DELETE子句清除行\t49
3.2.4 可采用无条件方式INSERT\t49
3.3 MERGE误区探索\t49
3.3.1 无法在源表中获得一组稳定的行\t49
3.3.2 DELETE子句的WHERE顺序必须在最后\t51
3.3.3 DELETE 子句只可以删除目标表,而无法删除源表\t52
3.3.4 更新同一张表的数据,需担心USING的空值\t53
3.4 MERGE的巧妙运用\t54
第4章 神秘的NULL和令人讨厌的CHAR\t58
4.1 神秘的NULL\t59
4.1.1 NULL概述\t59
4.1.2 NULL与函数\t64
4.1.3 NULL与索引\t79
4.1.4 NULL与SQL\t87
4.1.5 NULL与PL/SQL\t97
4.1.6 再谈NULL和空字符串区别\t101
4.1.7 NULL总结\t101
4.2 令人讨厌的CHAR\t102
4.2.1 CHAR与VARCHAR2基础\t102
4.2.2 CHAR与SQL\t105
4.2.3 CHAR与绑定变量\t109
4.2.4 CHAR与PL/SQL\t111
4.2.5 CHAR总结\t112
第5章 报表开发之扩展GROUP BY\t113
5.1 扩展GROUP BY概述\t113
5.2 ROLLUP\t114
5.2.1 UNION ALL实现ROLLUP功能\t114
5.2.2 ROLLUP分组\t116
5.2.3 部分ROLLUP分组\t120
5.2.4 ROLLUP总结\t121
5.3 CUBE\t121
5.3.1 CUBE分组\t121
5.3.2 部分CUBE分组\t123
5.3.3 CUBE总结\t124
5.4 GROUPING SETS实现小计\t124
5.4.1 GROUPING SETS分组\t124
5.4.2 部分GROUPING SETS分组\t126
5.4.3 CUBE、ROLLUP作为GROUPING SETS的参数\t126
5.4.4 GROUPING SETS总结\t128
5.5 组合列分组、连接分组、重复列分组\t128
5.5.1 组合列分组\t130
5.5.2 连接分组\t132
5.5.3 重复列分组\t134
5.5.4 组合列分组、连接分组、重复列分组总结\t134
5.6 3个扩展分组函数:GROUPING、GROUPING_ID、GROUP_ID\t135
5.6.1 GROUPING函数\t135
5.6.2 GROUPING_ID函数\t138
5.6.3 GROUP_ID函数\t142
5.6.4 扩展GROUP BY函数总结\t144
5.7 扩展分组综合实例\t144
第6章 探索Oracle自动类型转换\t149
6.1 为什么不建议使用自动类型转换\t150
6.2 自动类型转换规则\t156
6.3 自动类型转换常见错误\t166
第7章 Where in list问题解析\t169
7.1 问题引入:动态SQL构造\t170
7.2 使用正则表达式解决\t172
7.3 使用常规字符串函数及动态视图\t173
7.4 使用集合构造伪表\t176
7.5 Where in list性能问题\t178
7.6 Where in list问题总结\t188
第8章 例说数据库表设计和大量数据处理方法\t189
8.1 根据业务需求规划表结构\t189
8.2 主键的确定\t195
8.3 表的拆分、合并及数据的规范和反规范化\t199
8.4 数据类型的选择\t199
8.5 表的分区\t203
8.6 表的压缩\t203
8.7 抽取数据\t205
8.7.1 利用SQL*PLUS的SPOOL功能\t205
8.7.2 利用UTL_FILE\t207
8.7.3 利用第三方工具\t207
8.8 转换数据\t207
8.8.1 数据的增删改\t208
8.8.2 数据汇总\t211
8.9 加载数据\t227
8.9.1 利用SQLLDR加载\t227
8.9.2 利用外部表加载\t229
8.9.3 利用数据库链接加载\t233
8.9.4 利用分区交换技术加载\t234
8.10 逻辑导入/导出数据\t240
第9章 数据审核\t242
9.1 审核的分类\t242
9.2 列审核设计\t243
9.2.1 直接使用SQL语句\t245
9.2.2 提高审核效率\t248
9.2.3 管理审核关系\t254
9.2.4 单个列的复杂审核\t257
9.3 行审核设计\t258
9.3.1 重码的审核\t259
9.3.2 直接使用SQL语句\t260
9.3.3 管理审核关系\t261
9.3.4 行间包含四则运算的审核思路\t266
9.3.5 更复杂的行间审核思路\t267
9.4 小结\t267
第10章 趣谈Oracle分析函数\t269
10.1 概述\t269
10.2 函数语法\t270
10.3 函数列表\t276
10.4 函数用法\t277
10.4.1 最常见的分析函数应用场景\t279
10.4.2 ROWS的具体用法\t280
10.4.3 RANGE的具体用法\t281
10.4.4 KEEP的用法\t283
10.5 函数功能详解\t284
10.5.1 统计函数\t284
10.5.2 排序函数\t285
10.5.3 数据分布函数\t287
10.5.4 统计分析函数\t289
10.6 分析函数在BI及统计上的应用\t290
10.6.1 现状分析\t290
10.6.2 发展分析\t297
10.7 自定义聚集函数\t298
10.7.1 自定义聚集函数接口简介\t298
10.7.2 应用场景一:字符串聚集\t299
10.7.3 应用场景二:指数移动平均线\t301
第11章 Oracle层次查询\t305
11.1 概述\t305
11.2 样例数据\t306
11.3 CONNECT BY和START WITH查询\t306
11.3.1 概述\t306
11.3.2 基本语法\t306
11.3.3 样例\t308
11.4 SYS_CONNECT_BY_PATH函数\t313
11.5 WMSYS.WM_CONCAT非公开函数\t314
第12章 号段选取应用\t316
12.1 问题的提出\t316
12.2 相关基础知识\t317
12.2.1 伪列rownum和level\t317
12.2.2 利用层次查询构造连续的数\t317
12.2.3 用lead和lag获得相邻行的字段值\t318
12.3 解决问题\t320
12.3.1 已知号码求号段\t320
12.3.2 根据号段求出包含的数\t324
12.3.3 求缺失的号\t326
12.3.4 求尚未使用的号段\t330
12.4 小结\t334
第13章 分析SQL执行计划的关注点\t335
13.1 返回行与逻辑读的比率\t335
13.2 聚合查询\t338
13.3 返回行的数量\t341
13.4 Oracle预测行准确与否\t342
13.5 Predicate Information\t346
13.6 动态采样\t348
13.7 谁是主要矛盾\t349
第14章 Oracle开发误区探索\t352
14.1 避免对列运算\t352
14.2 消除隐式转换\t354
14.3 关注空格\t354
14.4 存储过程与权限\t355
14.5 提防DDL提交事务\t357
14.6 Insert into 错误\t359
14.7 关于or\t360
14.8 sequence中的cache\t361
14.9 树形查询易错处\t364
14.10 小心保留字\t367
14.11 函数索引陷阱\t371
14.12 外连接陷阱\t374
14.13 标量子查询\t375
第15章 提升PL/SQL开发性能漫谈\t378
15.1 重视解析\t378
15.1.1 触发器尽量考虑内部代码过程封装\t378
15.1.2 避免动态SQL\t380
15.1.3 OLTP系统中尽量使用绑定变量\t382
15.2 关注调用\t384
15.2.1 减少对sysdate的调用\t384
15.2.2 避免对mod函数的调用\t385
15.2.3 设法减少表扫描次数\t386
15.2.4 避免SQL中的函数调用\t391
15.3 简洁为王\t395
15.3.1 尽量用简单SQL替代PL/SQL逻辑\t395
15.3.2 避免不必要的排序\t397
15.3.3 利用Oracle现有功能\t399
15.4 细致入微\t400
15.4.1 使用pls_integer类型\t400
15.4.2 避免数据类型转换\t400
15.4.3 IF的顺序有讲究\t402
15.4.4 设计开发对列是否为空慎重决定\t404
15.4.5 分布式应用开发不可不知的HINT(driving_site)\t407
第16章 管道函数的学习与实战应用\t410
16.1 管道函数编写要点\t410
16.2 功能描述及案例\t411
16.2.1 可直接用TABLE()操作符方式输出结果集\t411
16.2.2 结果集可作为表来使用,直接和其他表相关联\t411
16.2.3 实现实时跟踪\t412
16.3 管道函数注意点\t414
16.3.1 清楚管道函数只是表函数的一种\t414
16.3.2 管道函数与DML\t415
16.3.3 管道函数集合的限制\t416
16.3.4 与管道函数相关的异常NO_DATA_NEEDED\t417
第17章 巧用锁特性避免重复启动同一程序\t420
17.1 基本技巧介绍\t420
17.2 原理介绍\t422
17.3 程序代码\t423
17.4 测试\t426
17.5 需要注意的点\t427
第18章 11g R2 新特性之递归with编程精粹\t428
18.1 上下级关系\t429
18.2 构造数列\t435
18.3 排列组合问题\t441
18.4 沿路径计算\t457
18.5 国际SQL挑战赛\t473
第19章 不可能的任务?超越Oracle\t479
19.1 为何选择cube\t480
19.1.1 cube简介\t480
19.1.2 cube优势\t480
19.1.3 测试环境\t481
19.2 newkid的设计思路和优化步骤\t482
19.2.1 一次扫描求出16种分组\t482
19.2.2 一次扫描求出1种分组,并基于此再一次扫描求出其余分组\t484
19.2.3 一次扫描求出1种分组,并基于此再多次分层累计求出其余分组\t485
19.2.4 变量长度和类型的优化\t487
19.3 为何选择OCI\t488
19.3.1 汇总算法的翻译和改进\t488
19.3.2 输入和输出的实现和改进\t489
19.3.3 不要忽视物理存储对数据库操作的影响\t490
19.3.4 不成功的优化教训\t490
19.4 总结\t493
第20章 动态SQL扩展\t494
20.1 动态SQL用途和应用场景\t494
20.2 EXECUTE IMMEDIATE语法\t495
20.2.1 执行DDL、DCL语句\t495
20.2.2 构造通用SQL处理\t496
20.2.3 执行复杂业务逻辑查询\t498
20.2.4 绑定变量\t502
20.2.5 BULK COLLECT动态SQL\t505
20.3 使用DBMS_SQL包\t507
20.3.1 DBMS_SQL函数和过程说明\t507
20.3.2 DBMS_SQL执行步骤\t508
20.3.3 DBMS_SQL应用场景\t509
20.3.4 DBMS_SQL与EXECUTE IMMEDIATE比较\t509
后记\t511
猜您喜欢