第Ⅰ部分 PL/SQL基本原理第1章 Oracle PL/SQL概览 3
1.1 历史和背景知识 4
1.2 体系结构 5
1.3 基本的块结构 7
1.4 Oracle 10g的新功能 9
1.4.1 内置包 10
1.4.2 编译时警告 10
1.4.3 条件编译 10
1.4.4 NUMBER数据类型行为 11
1.4.5 优化的PL/SQL编译器 11
1.4.6 正则表达式 12
1.4.7 引号的选择性 12
1.4.8 集合运算符 12
1.4.9 堆栈跟踪错误 13
1.4.10 包装PL/SQL存储程序 14
1.5 Oracle 11g的新功能 15
1.5.1 自动子程序内联 15
1.5.2 CONTINUE语句 16
1.5.3 跨会话PL/SQL函数结果缓存 16
1.5.4 增强的动态SQL 16
1.5.5 采用命名和位置等表示法的SQL调用 17
1.5.6 多进程连接池 19
1.5.7 PL/SQL Hierachical Profiler 20
1.5.8 PL/SQL Native Compiler生成本地代码 21
1.5.9 PL/Scope 21
1.5.10 增强的正则表达式 21
1.5.11 SIMPLE_INTEGER数据类型 21
1.5.12 SQL语句中的直接序列调用 21
1.6 小结 22
第2章 PL/SQL基础知识 23
2.1 Oracle PL/SQL块结构 24
2.2 变量、赋值和运算符 26
2.3 控制结构 28
2.3.1 条件结构 28
2.3.2 迭代结构 30
2.4 存储函数、过程和包 33
2.4.1 存储函数 34
2.4.2 过程 35
2.4.3 包 36
2.5 事务作用域 37
2.5.1 单事务作用域 37
2.5.2 多事务作用域 38
2.6 数据库触发器 38
2.7 小结 39
第3章 语言基本知识 41
3.1 字符和词汇单元 42
3.1.1 分隔符 42
3.1.2 标识符 46
3.1.3 字面值 47
3.1.4 注释 49
3.2 块结构 49
3.3 变量类型 53
3.3.1 标量数据类型 56
3.3.2 大对象 70
3.3.3 复合数据类型 73
3.3.4 系统引用游标 78
3.4 变量作用域 80
3.5 小结 81
第4章 控制结构 83
4.1 条件语句 84
4.1.1 IF语句 90
4.1.2 CASE语句 93
4.1.3 条件编译语句 95
4.2 迭代语句 96
4.2.1 简单循环语句 97
4.2.2 FOR循环语句 100
4.2.3 WHILE循环语句 102
4.3 游标结构 103
4.3.1 隐式游标 103
4.3.2 显式游标 106
4.4 批语句 112
4.4.1 BULK COLLECT INTO语句 112
4.4.2 FORALL语句 116
4.5 小结 119
第5章 错误管理 121
5.1 异常类型和作用域 122
5.1.1 编译错误 123
5.1.2 运行时错误 125
5.2 异常管理内置函数 129
5.3 用户定义的异常 131
5.3.1 声明用户定义的异常 131
5.3.2 动态的用户定义的异常 132
5.4 异常堆栈函数 133
5.4.1 异常块管理 134
5.4.2 错误堆栈格式化 137
5.5 数据库触发器异常管理 139
5.5.1 关键性错误数据库触发器 140
5.5.2 非关键性错误数据库触发器 145
5.6 小结 146
第Ⅱ部分 PL/SQL程序设计第6章 函数和过程 149
6.1 函数和过程体系结构 150
6.2 事务作用域 155
6.3 调用子例程 156
6.3.1 位置表示法 156
6.3.2 命名表示法 156
6.3.3 混合表示法 156
6.3.4 排除表示法 157
6.4 SQL调用表示法 157
6.5 函数 157
6.5.1 创建选项 159
6.5.2 值传递函数 168
6.5.3 引用传递函数 173
6.6 过程 176
6.6.1 值传递过程 177
6.6.2 引用传递过程 181
6.7 小结 186
第7章 集合 187
7.1 集合类型 189
7.1.1 varray集合 191
7.1.2 嵌套表 203
7.1.3 联合数组 216
7.2 集合运算符 223
7.2.1 CARDINALITY运算符 225
7.2.2 EMPTY运算符 226
7.2.3 MEMBER OF运算符 226
7.2.4 MULTISET EXCEPT运算符 226
7.2.5 MULTISET INTERSECT运算符 226
7.2.6 MULTISET UNION运算符 227
7.2.7 SET运算符 228
7.2.8 SUBMULTISET运算符 229
7.3 集合API 229
7.3.1 COUNT方法 231
7.3.2 DELETE方法 232
7.3.3 EXISTS方法 233
7.3.4 EXTEND方法 234
7.3.5 FIRST方法 236
7.3.6 LAST方法 237
7.3.7 LIMIT方法 237
7.3.8 NEXT方法 238
7.3.9 PRIOR方法 238
7.3.10 TRIM方法 239
7.4 小结 240
第8章 大对象 241
8.1 字符大对象:CLOB与NCLOB数据类型 242
8.2 PL/SQL读文件与写CLOB或NCLOB列 246
8.3 向数据库中上传CLOB 249
8.4 二进制大对象:BLOB数据类型 250
8.5 PL/SQL读文件与写BLOB列 252
8.6 向数据库中上传BLOB 255
8.7 SecureFile 255
8.8 二进制文件:BFILE数据类型 257
8.8.1 创建和使用虚拟目录 257
8.8.2 读取规范路径名与文件名 265
8.9 DBMS_LOB包 272
8.9.1 包常量 272
8.9.2 包异常 274
8.9.3 打开与关闭方法 275
8.9.4 操作方法 276
8.9.5 内省方法 280
8.9.6 BFILE方法 283
8.9.7 临时LOB方法 285
8.10 小结 285
第9章 包 287
9.1 包体系结构 288
9.1.1 前向引用 289
9.1.2 重载 291
9.2 包规范 292
9.2.1 变量 295
9.2.2 类型 296
9.2.3 组件:函数与过程 299
9.3 包主体 300
9.3.1 变量 302
9.3.2 类型 303
9.3.3 组件:函数与过程 304
9.4 定义者与调用者权限 306
9.4.1 授权与同义词 307
9.4.2 远程调用 308
9.5 管理数据库目录中的包 309
9.5.1 查找、验证和描述包 309
9.5.2 检查依赖关系 311
9.5.3 比较有效性验证方法:时间戳与签名 312
9.6 小结 312
第10章 触发器 313
10.1 触发器简介 314
10.2 数据库触发器体系结构 315
10.3 数据定义语言触发器 317
10.3.1 事件属性函数 318
10.3.2 构建DDL触发器 327
10.4 数据操作语言触发器 329
10.4.1 语句级触发器 330
10.4.2 行级触发器 331
10.5 复合触发器 334
10.6 Instead-of触发器 338
10.7 系统或数据库事件触发器 341
10.8 触发器限制 343
10.8.1 最大触发器尺寸 343
10.8.2 SQL语句 343
10.8.3 LONG和LONG RAW数据类型 344
10.8.4 变异表 344
10.8.5 系统触发器 345
10.9 小结 346
第Ⅲ部分 PL/SQL高级编程第11章 动态SQL 349
11.1 动态SQL体系结构 350
11.2 本地动态SQL(NDS) 350
11.2.1 动态语句 351
11.2.2 带输入的动态语句 353
11.2.3 带输入和输出的动态语句 355
11.2.4 带未知数量的输入的动态语句 359
11.3 DBMS_SQL包 360
11.3.1 动态语句 362
11.3.2 带输入变量的动态语句 365
11.3.3 带输入和输出变量的动态语句 367
11.3.4 DBMS_SQL包定义 370
11.4 小结 381
第12章 会话间通信 383
12.1 会话间通信简介 384
12.1.1 需要永久性或临时性的结构体 384
12.1.2 不需要永久性或临时性的结构体 384
12.1.3 比较会话间通信方法 385
12.2 DBMS_PIPE内置包 385
12.2.1 DBMS_PIPE包简介 385
12.2.2 DBMS_PIPE包的定义 387
12.2.3 DBMS_PIPE包的使用 391
12.3 DBMS_ALERT内置包 401
12.3.1 DBMS_ALERT包简介 401
12.3.2 DBMS_ALERT包的定义 402
12.3.3 DBMS_ALERT包的使用 404
12.4 小结 408
第13章 外部过程 409
13.1 外部过程简介 410
13.2 使用外部过程 410
13.2.1 定义extproc的结构 410
13.2.2 定义extproc的Oracle Net Services配置 412
13.2.3 定义多线程的外部过程代理 419
13.2.4 使用C共享库 421
13.2.5 使用Java共享库 428
13.3 解决共享库的错误 432
13.3.1 侦听器或环境的配置 432
13.3.2 共享库或PL/SQL库包装器的配置 435
13.4 小结 436
第14章 对象类型 437
14.1 对象基础知识 439
14.1.1 声明对象 440
14.1.2 实现对象主体 442
14.1.3 getter和setter 444
14.1.4 静态成员方法 446
14.1.5 比较对象 447
14.2 继承和多态 454
14.2.1 声明子类 455
14.2.2 实现子类 456
14.2.3 类型演变 459
14.3 实现集合对象主体 460
14.3.1 声明对象类型集合 460
14.3.2 实现对象类型集合 461
14.4 小结 463
第15章 Java库 465
15.1 Oracle 11g JVM的新功能 466
15.2 Java的体系结构 466
15.2.1 Java的执行控制 468
15.2.2 Java资源存储 468
15.2.3 Java类名 469
15.2.4 Java分解器 469
15.2.5 Java安全与权限 469
15.2.6 Java线程 469
15.3 Oracle的Java连接类型 469
15.3.1 客户端驱动程序或JDBC瘦驱动程序 469
15.3.2 Oracle调用接口驱动程序或中间层胖驱动程序 470
15.3.3 Oracle服务器端内部驱动程序或服务器层胖驱动程序 470
15.4 在Oracle中创建Java类库 471
15.4.1 构建内部服务器Java函数 472
15.4.2 创建内部服务器Java过程 477
15.4.3 创建内部服务器Java对象 480
15.5 Java类库的故障检修 485
15.5.1 创建、加载和删除Java类库对象 485
15.5.2 使用Java类库对象 486
15.6 映射Oracle类型 488
15.7 小结 490
第16章 Web应用程序开发 491
16.1 PL/SQL Web Server体系结构 493
16.1.1 Oracle HTTP Server体系结构 493
16.1.2 Oracle XML Database Server体系结构 494
16.2 配置独立Oracle HTTP服务器 496
16.2.1 描述mod_plsql模组 497
16.2.2 配置Oracle HTTP服务器 498
16.3 配置XML DB Server 500
16.3.1 配置静态身份验证 503
16.3.2 配置动态身份验证 504
16.3.3 配置匿名身份验证 504
16.4 比较支持Web的PL/SQL过程和PSP 506
16.5 创建支持Web的PL/SQL存储过程 507
16.5.1 开发不带形参的过程 509
16.5.2 开发带形参的过程 510
16.5.3 优缺点分析 515
16.6 构建和访问PL/SQL Server Page(PSP) 515
16.6.1 开发和运行不带形参的PSP过程 517
16.6.2 开发带形参的PSP过程 518
16.6.3 优缺点比较 522
16.7 小结 522
第Ⅳ部分 附录 525
附录A Oracle数据库管理入门 525
A.1 Oracle数据库体系结构 526
A.2 启动和停止Oracle数据库 530
A.3 启动和停止Oracle侦听器 537
A.4 Oracle角色和权限 541
A.5 访问和使用SQL*Plus界面 542
A.6 小结 549
附录B Oracle数据库SQL入门 551
B.1 Oracle SQL*Plus数据类型 552
B.2 数据定义语言(DDL) 556
B.3 数据查询语言(DQL) 568
B.4 数据操纵语言(DML) 574
B.5 数据控制语句(DCL) 578
B.6 小结 579
附录C PHP技术入门 581
C.1 历史和背景 582
C.2 开发Web编程解决方案 583
C.3 小结 632
附录D Oracle数据库Java技术入门 633
D.1 Java和JDBC体系结构 634
D.2 配置Oracle Java环境 634
D.3 Java编程语言技术入门 636
D.4 测试客户端或瘦驱动程序JDBC连接 643
D.5 访问标量变量 648
D.6 写入和访问大对象 655
D.7 小结 670
附录E 正则表达式入门 671
E.1 正则表达式简介 672
E.2 Oracle 11正则表达式实现 676
E.3 使用正则表达式 681
E.4 小结 686
附录F 包装PL/SQL代码入门 687
F.1 包装PL/SQL的限制 688
F.2 使用wrap命令行实用程序 688
F.3 使用DBMS_DDL命令行实用程序 689
F.4 小结 692
附录G PL/SQL分层的配置文件入门 693
G.1 配置模式 694
G.2 收集配置文件数据 695
G.3 配置文件数据 698
G.4 使用plshprof命令行实用程序 702
G.5 小结 704
附录H PL/Scope 705
H.1 配置PL/Scope数据收集 706
H.2 查看PL/Scope收集数据 706
H.3 小结 707
附录I PL/SQL保留字和关键字 709
附录J PL/SQL内置函数 717
J.1 字符函数 718
J.2 数据类型转换 724
J.3 错误报告 734
J.4 综合函数 736
J.5 数字 754
J.6 小结 758