《Oracle Database 12c PL/SQL开发指南 第7版》PDF下载

  • 购买积分:25 如何计算积分?
  • 作  者:(美)麦克劳克林著
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2015
  • ISBN:9787302403647
  • 页数:965 页
图书介绍:本书展示的PL/SQL编程知识十分全面,包括获取和处理数据、编写PL/SQL语句、执行有效的查询、混合PHP和Java编程、使用动态SQL、代码的调试、安全性、面向对象编程技术等,同时全书针对Oracle Database 12c数据库全面改写,有利于读者充分发挥这一新版数据库的强大功能。

第Ⅰ部分 Oracle PL/SQL 3

第1章 Oracle PL/SQL程序开发概览 3

1.1 PL/SQL的历史和背景 4

1.2 Oracle开发架构 6

1.2.1 数据库 7

1.2.2 PL/SQL语言 8

1.2.3 Oracle处理架构 10

1.2.4 两层模型 11

1.2.5 n层模型 12

1.3 本章小结 13

1.4 精熟测验 13

第2章 新特性 15

2.1 SQL新特性 16

2.1.1 用数据目录DIRECTORY限定LIBRARY对象 16

2.1.2 使用有效时间(VT)来定义表 17

2.1.3 增强的Oracle原生LEFT OUTER JOIN语法 18

2.1.4 基于序列的列的默认值 18

2.1.5 显式NULL插入的默认值 19

2.1.6 标识列 20

2.1.7 STRING和RAW类型大小限制的增加 21

2.1.8 将SQL语句的结果传递给外部程序 21

2.1.9 查询行限制和偏移的原生SQL支持 23

2.1.10 MySQL应用程序的Oracle数据库驱动程序 26

2.1.11 SQL CROSS APPLY、OUTER APPLY和LATERAL 26

2.1.12 BEQUEATH CURRENT_USER视图 28

2.2 PL/SQL新特性 28

2.2.1 调用者权限函数的缓存 29

2.2.2 添加PL/SQL程序单元调用者到白名单 29

2.2.3 PL/SQL类型的原生客户端API支持 30

2.2.4 新的PL/SQL包utl_call_stack 30

2.2.5 dbms_utility包添加了expand_sql_txt子程序 30

2.2.6 dbms_sql包为parse过程添加了新的模式 32

2.2.7 SQL WITH子句中的PL/SQL函数 32

2.2.8 SQL中允许PL/SQL特定的数据类型 33

2.2.9 隐式的REF CURSOR参数绑定 36

2.3 支持脚本 36

2.4 本章小结 36

2.5 精熟测验 36

第3章 PL/SQL基础知识 39

3.1 块结构 40

3.1.1 执行块 40

3.1.2 基本块结构 41

3.1.3 声明块 43

3.1.4 异常块 44

3.2 块中变量的行为 45

3.2.1 匿名块 45

3.2.2 嵌套匿名块 49

3.2.3 局部命名块 51

3.2.4 存储命名块 54

3.3 基本标量和复合数据类型 56

3.3.1 标量数据类型 56

3.3.2 属性和表的锚定 58

3.3.3 复合数据类型 60

3.4 控制结构 72

3.4.1 条件结构 72

3.4.2 迭代结构 74

3.5 异常 81

3.5.1 用户自定义异常 82

3.5.2 动态的用户自定义异常 84

3.6 批量操作 84

3.7 函数、过程和包 86

3.7.1 函数 87

3.7.2 过程 88

3.7.3 包 90

3.8 事务作用域 94

3.8.1 单事务作用域 95

3.8.2 多事务作用域 96

3.9 数据库触发器 96

3.10 本章小结 97

3.11 精熟测验 97

第4章 语言基本知识 99

4.1 词汇单元 99

4.1.1 分隔符 100

4.1.2 标识符 103

4.1.3 字面值 105

4.1.4 注释 106

4.2 变量和数据类型 107

4.2.1 变量数据类型 108

4.2.2 标量数据类型 111

4.2.3 大对象 125

4.2.4 复合数据类型 126

4.2.5 系统引用游标 130

4.3 本章小结 132

4.4 精熟测验 132

第5章 控制结构 134

5.1 条件语句 135

5.1.1 IF语句 141

5.1.2 CASE语句 145

5.1.3 条件编译语句 147

5.2 迭代语句 150

5.2.1 简单循环语句 150

5.2.2 FOR循环语句 156

5.2.3 WHILE循环语句 158

5.3 游标结构 161

5.3.1 隐式游标 162

5.3.2 显式游标 166

5.4 批语句 177

5.4.1 BULK COLLECT INTO语句 178

5.4.2 FORALL语句 182

5.5 支持脚本 187

5.6 本章小结 187

5.7 精熟测验 187

第6章 集合 189

6.1 集合介绍 190

6.2 对象类型:变长数组和表集合 192

6.2.1 变长数组集合 192

6.2.2 表集合 195

6.3 关联数组 209

6.4 Oracle集合API 216

6.4.1 COUNT方法 218

6.4.2 DELETE方法 219

6.4.3 EXISTS方法 220

6.4.4 EXTEND方法 221

6.4.5 FIRST方法 222

6.4.6 LAST方法 222

6.4.7 LIMIT方法 223

6.4.8 NEXT方法 223

6.4.9 PRIOR方法 224

6.4.10 TRIM方法 224

6.5 支持脚本 226

6.6 本章小结 226

6.7 精熟测验 226

第7章 错误管理 228

7.1 异常类型和作用域 229

7.1.1 编译时错误 230

7.1.2 运行时错误 232

7.2 异常管理内置函数 238

7.3 用户定义的异常 240

7.3.1 声明用户定义的异常 240

7.3.2 动态的用户定义的异常 242

7.4 异常堆栈函数 245

7.5 支持脚本 250

7.6 本章小结 250

7.7 精熟测验 251

第Ⅱ部分 PL/SQL编程 255

第8章 函数和过程 255

8.1 函数和过程架构 256

8.2 事务作用域 262

8.2.1 调用子例程 263

8.2.2 位置表示法 264

8.2.3 命名表示法 264

8.2.4 混合表示法 264

8.2.5 排除表示法 264

8.2.6 SQL调用表示法 265

8.3 函数 265

8.3.1 函数模型选择 267

8.3.2 创建选项 267

8.3.3 按值传递函数 279

8.3.4 按引用传递函数 291

8.4 过程 294

8.4.1 按值传递过程 295

8.4.2 按引用传递过程 297

8.5 支持脚本 299

8.6 本章小结 300

8.7 精熟测验 300

第9章 包 302

9.1 包架构 303

9.2 包规范 308

9.2.1 原型特性 309

9.2.2 连续可重用预编译器指令 311

9.2.3 变量 312

9.2.4 类型 314

9.2.5 组件:函数与过程 316

9.3 包主体 318

9.3.1 原型特性 318

9.3.2 变量 320

9.3.3 类型 322

9.3.4 组件:函数与过程 323

9.4 定义者与调用者权限模型 326

9.5 管理数据库目录中的包 329

9.5.1 查找、验证和描述包 329

9.5.2 检查依赖关系 330

9.5.3 比较验证方法:时间戳与签名 331

9.6 本章小结 332

9.7 精熟测验 332

第10章 大对象 334

10.1 使用内部存储的LOB类型 335

10.1.1 低于32K的LOB赋值 335

10.1.2 高于32K的LOB赋值 337

10.2 将文件读入内部存储的列 345

10.2.1 将本地文件读入CLOB或NCLOB列 346

10.2.2 将本地文件读入BLOB列 348

10.2.3 通过Web页面处理LOB 351

10.3 使用二进制文件(BFILE) 358

10.3.1 创建和使用虚拟目录 359

10.3.2 读取规范路径名与文件名 365

10.4 了解dbms_lob包 371

10.4.1 包常量 371

10.4.2 包异常 373

10.4.3 打开与关闭方法 373

10.4.4 操作方法 374

10.4.5 内省方法 380

10.4.6 BFILE方法 384

10.4.7 临时LOB方法 385

10.4.8 安全链接方法 387

10.5 支持脚本 390

10.5.1 从LONG转换为CLOB的脚本 390

10.5.2 管理来自于文件系统的LOB 390

10.5.3 通过web管理CLOB和BLOB LOB 390

10.5.4 通过Web管理BFILE LOB 390

10.6 本章小结 391

10.7 精熟测验 391

第11章 对象类型 393

11.1 对象基础知识 396

11.1.1 声明对象类型 396

11.1.2 实现对象主体 399

11.1.3 对象类型白名单 403

11.1.4 getter和setter 404

11.1.5 静态成员方法 406

11.1.6 比较对象 408

11.2 继承和多态 415

11.2.1 声明子类 416

11.2.2 实现子类 417

11.2.3 类型演变 421

11.3 实现对象类型集合 422

11.3.1 声明对象类型集合 422

11.3.2 实现对象类型集合 423

11.4 支持脚本 426

11.5 本章小结 426

11.6 精熟测验 426

第12章 触发器 429

12.1 触发器简介 430

12.2 数据库触发器架构 432

12.3 数据定义语言触发器 435

12.3.1 事件属性函数 437

12.3.2 构建DDL触发器 448

12.4 数据操作语言触发器 450

12.4.1 语句级触发器 451

12.4.2 行级触发器 453

12.5 复合触发器 460

12.6 Instead of触发器 464

12.7 系统和数据库事件触发器 468

12.8 触发器限制 470

12.8.1 最大触发器尺寸 470

12.8.2 SQL语句 470

12.8.3 LONG和LONGRAW数据类型 471

12.8.4 变异表 471

12.8.5 系统触发器 472

12.9 支持脚本 473

12.10 本章小结 473

12.11 精熟测验 473

第13章 动态SQL 475

13.1 动态SQL架构 476

13.2 本地动态SQL(NDS) 477

13.2.1 动态语句 478

13.2.2 带输入的动态语句 481

13.2.3 带输入和输出的动态语句 483

13.2.4 带未知数量的输入的动态语句 486

13.3 dbms_sql包 488

13.3.1 动态语句 489

13.3.2 带输入变量的动态语句 492

13.3.3 带输入变量和固定输出的动态语句 494

13.3.4 带输入和输出变量的动态语句 498

13.3.5 dbms_sql包定义 503

13.4 支持脚本 516

13.5 本章小结 517

13.6 精熟测验 517

第Ⅲ部分 附录和术语表 521

附录A Oracle数据库入门 521

A.1 Oracle数据库架构 522

A.2 启动和停止Oracle Database 12c服务器 528

A.2.1 UNIX或Linux操作 529

A.2.2 Microsoft Windows操作 533

A.3 启动和停止Oracle侦听器 534

A.4 多版本并发控制 539

A.4.1 数据事务 540

A.4.2 DML锁定和隔离控制 542

A.5 定义者权限和调用者权限 543

A.5.1 定义者权限 544

A.5.2 调用者权限 544

A.6 SQL交互和批处理 545

A.6.1 SQL*Plus命令行界面 545

A.6.2 Oracle SQL Developer界面 564

A.7 数据库管理员 570

A.7.1 配置用户 570

A.7.2 使用数据库约束 577

A.7.3 安全加固 586

A.7.4 数据管理 595

A.8 SQL调优 597

A.8.1 EXPLAIN PLAN语句 598

A.8.2 DBMS_XPLAN包 599

A.9 SQL跟踪 603

A.9.1 跟踪会话状态 603

A.9.2 将原始跟踪文件转换为可读跟踪文件 605

A.10 本附录小结 606

附录B SQL入门 607

B.1 Oracle SQL数据类型 610

B.2 数据定义语言(DDL) 614

B.2.1 CREATE语句 615

B.2.2 ALTER语句 675

B.2.3 RENAME语句 691

B.2.4 DROP语句 691

B.2.5 TRUNCATE语句 694

B.2.6 COMMENT语句 694

B.3 数据管理语言(DML) 694

B.3.1 符合ACID的事务 695

B.3.2 INSERT语句 698

B.3.3 UPDATE语句 712

B.3.4 DELETE语句 724

B.3.5 MERGE语句 728

B.4 事务控制语言(TCL) 735

B.5 查询:SELECT语句 736

B.5.1 返回列或者返回列运算结果的查询 738

B.5.2 聚合查询 751

B.5.3 选择性返回列或结果的查询 756

B.5.4 联接结果 765

B.5.5 数据的联接 767

B.5.6 集合的联接 775

B.6 本附录小结 778

附录C SQL内置函数 779

C.1 字符函数 780

C.1.1 ASCII函数 780

C.1.2 ASCHSTR函数 780

C.1.3 CHR函数 781

C.1.4 CONCAT函数 781

C.1.5 INITCAP函数 782

C.1.6 INSTR函数 782

C.1.7 LENGTH函数 783

C.1.8 LOWER函数 783

C.1.9 LPAD函数 784

C.1.10 LTRIM函数 784

C.1.11 REPLACE函数 785

C.1.12 REVERSE函数 785

C.1.13 RPAD函数 785

C.1.14 RTRIM函数 786

C.1.15 UPPER函数 786

C.2 数据类型转换函数 787

C.2.1 CAST函数 787

C.2.2 CONVERT函数 789

C.2.3 TO_CHAR函数 790

C.2.4 TO_CLOB函数 792

C.2.5 TO_DATE函数 792

C.2.6 TO_LOB函数 793

C.2.7 TO_NCHAR函数 794

C.2.8 TO_NCLOB函数 795

C.2.9 TO_NUMBER函数 795

C.3 日期-时间转换函数 796

C.3.1 ADD_MONTHS函数 796

C.3.2 CURRENT_DATE函数 796

C.3.3 CURRENT_TIMESTAMP函数 796

C.3.4 DBTIMEZONE函数 797

C.3.5 EXTRACT函数 797

C.3.6 FROM_TZ函数 798

C.3.7 LAST_DAY函数 798

C.3.8 LOCALTIMESTAMP函数 799

C.3.9 MONTHS_BETWEEN函数 799

C.3.10 NEW_TIME函数 799

C.3.11 ROUND函数 800

C.3.12 SYSDATE函数 801

C.3.13 SYSTIMESTAMP函数 801

C.3.14 TO_CHAR(date)函数 801

C.3.15 TO_DSINTERVAL函数 802

C.3.16 TO_TIMESTAMP函数 803

C.3.17 TO_TIMESTAMP_TZ函数 803

C.3.18 TO-YMINTERVAL函数 804

C.3.19 TRUNC(date)函数 804

C.3.20 TZ OFFSET函数 804

C.4 集合管理函数 805

C.4.1 CARDINALITY函数 805

C.4.2 COLLECT函数 805

C.4.3 POWERMULTISET函数 809

C.4.4 POWERMULTISET_BY_CARDINALITY函数 809

C.4.5 SET函数 810

C.5 集合运算符 810

C.5.1 CARDINALITY运算符 812

C.5.2 EMPTY运算符 812

C.5.3 MULTISET运算符 812

C.5.4 MULTISET EXCEPT运算符 813

C.5.5 MULTISET INTERSECT运算符 814

C.5.6 MULTISET UNION运算符 814

C.5.7 SET运算符 815

C.5.8 SUBMULTISET OF运算符 816

C.6 数字函数 816

C.6.1 CEIL函数 817

C.6.2 FLOOR函数 817

C.6.3 MOD函数 817

C.6.4 POWER函数 819

C.6.5 REMAINDER函数 820

C.6.6 ROUND函数 821

C.7 错误报告函数 821

C.7.1 SQLCODE函数 821

C.7.2 SQLERRM函数 822

C.8 杂项函数 823

C.8.1 BFILENAME函数 824

C.8.2 COALESCE函数 826

C.8.3 DECODE函数 826

C.8.4 DUMP函数 827

C.8.5 EMPTY_BLOB函数 828

C.8.6 EMPTY_CLOB函数 830

C.8.7 GREATEST函数 831

C.8.8 LEAST函数 833

C.8.9 NANVL函数 834

C.8.10 NULLIF函数 835

C.8.11 NVL函数 836

C.8.12 SYS_CONTEXT函数 836

C.8.13 TABLE函数 839

C.8.14 TREAT函数 842

C.8.15 USERENV函数 843

C.8.16 VSIZE函数 844

C.9 本附录小结 844

附录D PL/SQL内置程序包和类型 845

D.1 Oracle Database 11g和12c的新程序包 846

D.2 程序包使用示例 852

D.2.1 DBMS_APPLICATION_INFO示例 853

D.2.2 DBMS_COMPARISON 858

D.2.3 DBMS_CRYPTO 863

D.2.4 DBMS_FGA 866

D.2.5 案例研究:查询工具 867

D.3 支持脚本 874

D.4 本附录小结 874

附录E 正则表达式入门 875

E.1 正则表达式简介 876

E.1.1 字符类 876

E.1.2 校准类 880

E.1.3 元字符 880

E.1.4 元序列 880

E.1.5 字面值 881

E.2 正则表达式实现 881

E.2.1 REGEXP_COUNT函数 882

E.2.2 REGEXP_INSTR函数 885

E.2.3 REGEXP_LIKE函数 886

E.2.4 REGEXP_REPLACE函数 887

E.2.5 REGEXP_SUBSTR函数 889

E.3 支持脚本 890

E.4 本附录小结 890

附录F 包装PL/SQL代码入门 891

F.1 包装PL/SQL的限制 892

F.1.1 PL/SQL的wrap实用程序的局限性 892

F.1.2 DBMS_DDL.WRAP函数的限制 892

F.2 使用wrap命令行实用程序 893

F.3 使用DBMS DDL命令行实用程序 893

F.3.1 WRAP函数 893

F.3.2 CREATE_WRAPPED过程 898

F.4 本附录小结 899

附录G PL/SQL分层的配置文件入门 900

G.1 配置架构 901

G.2 收集配置文件数据 902

G.3 配置文件数据 905

G.3.1 读取原始输出 905

G.3.2 定义PL/SQL配置文件表 907

G.3.3 查询分析数据 909

G.4 使用plshprof命令行实用程序 910

G.5 支持脚本 912

G.6 本附录小结 912

附录H PL/SQL保留字和关键字 913

附录I 精熟测验答案 927

术语表 951