当前位置:首页 > 工业技术
Oracle9i PL/SQL从入门到精通
Oracle9i PL/SQL从入门到精通

Oracle9i PL/SQL从入门到精通PDF电子书下载

工业技术

  • 电子书积分:18 积分如何计算积分?
  • 作 者:谈竹贤等编著
  • 出 版 社:北京:中国水利水电出版社
  • 出版年份:2002
  • ISBN:7508410556
  • 页数:613 页
图书介绍:Oracle9i是Oracle公司于2001年推出的最新版本的大型关系型数据库管理系统,它加强了用于电子商务环境的一系列特定功能,并提供了更好的可用性、可伸缩性、安全性。可管理性的开发平台。全书包括23章,由浅入深地介绍了PL/SQL编程及其技巧。本书在向读者介绍基本PL/SQL的同时,还融合7很多在Oracle9i中才有的PL/SQL新特性,这些特性贯穿于本书各个章节之中。本书内容划分为三大部分,首先是基础知识,介绍了PL/SQL简介、PL/SQL基础、控制结构、SQL基本命令、Oracle内置函数、自创建过程和函数、包和异常处理等内容;第二部分为应用开发,介绍了游标技术、触发器、集合、对象、本机动态SQL以及文件读写;最后一部分为高级部分,介绍了会话间通信、Oracle高级队列、作业管理、大型对象、开发Web程序以及性能优化等PL/SQL高级技术。本书专为从事Oracle开发的初级程序员和中级程序员编写,通过本书的学习,可以使您快速地由Oracle的门外汉转变为精通Oracle9i的专业人士,同时本书对Oracle高级程序员也有很大的借鉴和帮助作用,本书亦对作为各初、高等院校师生的
《Oracle9i PL/SQL从入门到精通》目录

第1章 PL/SQL简介 1

1.1 什么是PL/SQL 1

1.2.2 变量和类型 2

1.2.1 块结构 2

1.2 PL/SQL功能特性 2

1.2.5 过程和函数 3

1.2.4 游标 3

1.2.3 程序控制结构 3

1.2.10 内置包 4

1.2.9 集合 4

1.2.6 包 4

1.2.7 动态SQL 4

1.2.8 对象类型 4

1.3 Oracle 9i的 PL/SQL新特性 5

1.4 使用SQL*Plus 6

1.5 使用SQL*Plus Worksheet 10

1.7 练习 11

1.6 小结 11

2.1.1 PL/SQL块的类型 12

2.1 PL/SQL程序结构 12

第2章 PL/SQL基础 12

2.1.2 PL/SQL块的结构 15

2.1.3 词法单位 17

2.2 变量声明 24

作用域和可见性 26

2.3 PL/SQL变量类型 28

2.3.1 数字型 29

2.3.2 字符型 31

2.3.3 国际化字符类型 34

2.3.4 LOB(大型对象)类型 36

2.3.5 布尔(BOOLEAN)类型 37

2.3.6 日期和时间间隔(Datetime和Interval)类型 38

2.3.9 用户自定义类型 41

2.3.8 引用类型 41

2.3.7 复合类型 41

2.4.2 隐式转换(Implicit Conversion) 43

2.4.1 显式转换(Explicit Conversion) 43

2.4 数据类型转换 43

2.5.1 运算符的优先级 45

2.5 PL/SQL表达式 45

2.4.3 隐式转换和显式转换的比较 45

2.5.2 字符表达式 46

2.5.3 布尔表达式 47

2.5.4 CASE表达式 48

2.5.5 在比较和条件语句中处理NULL值 50

2.6.1 算术运算符 52

2.6 PL/SQL运算符 52

2.6.2 逻辑运算符 53

2.6.3 比较运算符 55

2.6.5 用户自定义运算符 57

2.6.4 字符串运算符 57

2.8 练习 58

2.7 小结 58

3.1 表 59

第3章 表和记录 59

3.2.1 记录的定义 61

3.2.2 记录赋值 63

3.3.1 使用%TYPE类型 65

3.3 %TYPE和%ROWTYPE 65

3.3.2 使用%ROWTYPE类型 66

3.4.2 ROWID伪列 68

3.4.1 CURRVAL和NEXTVAL伪列 68

3.4 伪列 68

3.6 练习 69

3.5 小结 69

3.4.3 ROWNUM伪列 69

4.1.1 IF-THEN语旬 70

4.1 条件控制 70

第4章 PL/SQL控制结构 70

4.1.2 IF-THEN-ELSE语句 71

4.1.3 IF-THEN-ELSIF语句 72

4.1.4 CASE语句 73

4.1.5 搜索CASE语句 75

4.1.6 条件语句使用指导 76

4.2.1 LOOP循环 78

4.2 循环结构 78

4.2.2 WHILE-LOOP循环 80

4.2.3 FOR循环 81

4.3 顺序结构 87

4.2.4 循环语句使用指导 87

4.3.1 GOTO语句 88

4.3.2 NULL语句 91

4.4 小结 92

4.5 练习 93

5.1 SQL基本命令分类 94

第5章 SQL基本命令 94

5.2 数据定义语言(DDL) 96

5.3.1 INSERT语句 98

5.3.2 SELECT语句 99

5.3.4 DELETE语句 101

5.3.3 UPDATE语句 101

5.3.5 LOCK TABLE命令 102

5.4.1 SET TRANSACTION 103

5.4 事务控制命令 103

5.5 会话控制命令 104

5.4.3 SAVE POINT 104

5.4.2 COMMIT与ROLLBACK 104

5.5.2 SET ROLE命令 105

5.5.1 ALTER SESSION命令 105

5.6 系统控制命令 106

5.7 小结 107

5.8 练习 108

6.1 错误报告(Error Reporting)函数 109

第6章 Oracle内置SQL函数 109

6.2 数值(Number)函数 110

6.2.1 BITAND 111

6.2.6 TRUNC 112

6.2.5 ROUND 112

6.2.2 CEIL 112

6.2.3 FLOOR 112

6.2.4 SIGN 112

6.3.1 CONCAT 113

6.3 字符(Character)函数 113

6.3.3 LPAD 114

6.3.2 INSTR 114

6.3.7 NLS_UPPER 115

6.3.6 NLS-LOWER 115

6.3.4 LTRIM 115

6.3.5 NLS_INITCAP 115

6.3 10 SOUNDEX 116

6.3.9 REPLACE 116

6.3.8 NLSSORT 116

6.3.12 TRANSLATE 117

6.3.11 SUBSTR 117

6.4 转换(Conversion)函数 118

6.3.13 TRIM 118

6.4.2 TO_CHAR 119

6.4.1 CONVERT 119

6.4.4 TO_DATE 122

6.4.3 TO_CLOB 122

6.5 日期(Date)函数 123

6.4.7 TO_ NUMBER 123

6.4.5 STO_MULTI_BYTE 123

6.4.6 TO_SINGLE_BYTE 123

6.5.1 SYSDATE函数 124

6.5.4 CURRENT_TIMESTAMP函数 125

6.5.3 CURRENT_DATE函数 125

6.5.2 ADD_MONTHS函数 125

6.5.8 LOCALTIMESTAMP函数 126

6.5.7 FROM_TZ函数 126

6.5.5 DBTIMEZONE函数 126

6.5.6 EXTRACT函数 126

6.5.10 NEW_TIME函数 127

6.5.9 MONTHS_BETWEEN函数 127

6.5.12 NUMTODSINTERVAL函数 128

6.5.11 NEXT_DAY函数 128

6.5.15 SESSIONTIMEZONE函数 129

6.5.14 ROUND函数 129

6.5.13 NUMTOYMINTERVAL函数 129

6.5.19 TO_TIMESTAMP_TZ函数 130

6.5.18 TO_TIMESTAMP函数 130

6.5.17 TO_DSINTERVAL函数 130

6.6 分组(Group)函数 131

6.5.22 TRUNC函数 131

6.5.20 TO_YMINTERVAL函数 131

6.5.21 TZ_OFFSET函数 131

6.6.2 VARIANCE函数 132

6.6.1 STDDEV函数 132

6.7.1 DECODE函数 133

6.7 杂项(Misc)函数 133

6.7.3 GREATEST函数 134

6.7.2 DUMP函数 134

6.7.5 NVL函数 135

6.7.4 LEAST函数 135

6.9 练习 136

6.8 小结 136

7.1 使用过程 137

第7章 过程与函数 137

7.1.1 创建过程 138

7.1.2 调用过程 141

7.2 使用函数 143

7.1.4 删除过程 143

7.1.3 重新编译过程 143

7.2.1 函数的定义 144

7.2.3 调用函数 146

7.3 子程序 147

7.2.4 删除函数 147

7.3.1 内置子程序 148

7.3.2 本地子程序 149

7.4 递归 152

7.6 练习 153

7.5 小结 153

8.2 包的规范与创建 154

8.1 包的概念 154

第8章 包 154

8.2.1 使用包的优势 157

8.2.3 理解包体 158

8.2.2 理解包规范 158

8.3 包的调用 165

8.4.1 包的重新编译 169

8.4 包的重新编译和重载 169

8.4.2 包的重载 170

8.6 练习 171

8.5 小结 171

9.1 什么是异常 172

第9章 异常处理 172

9.2 PL/SQL预定义异常 174

9.3 PL/SQL的异常处理结构 176

9.3.2 异常的传播 178

9.4.1 声明异常 185

9.4 自定义异常 185

9.4.2 使用编译指令EXCEPTION_INIT 186

9.4.3 使用RAISE_APPLICATION_ERROR 187

9.4.4 使用错误函数SQLCODE和SQLERRM 189

9.5 小结 192

9.6 练习 193

10.2.1 声明游标 194

10.2 显式游标 194

第10章 游标 194

10.1 什么是游标 194

10.2.2 打开游标(OPEN CURSOR) 196

10.2.3 提取游标(FETCH CURSOR) 197

10.2.4 关闭游标(CLOSE CURSOR) 198

10.2.5 显式游标的属性 199

10.2.7 在包中使用游标 202

10.2.6 在游标中使用子查询 202

10.3 隐式游标 203

10.4.1 基本循环(LOOP..END LOOP) 205

10.4 游标提取循环 205

10.4.3 FOR循环(CURSOR FOR LOOP) 207

10.4.2 WHILE循环 207

10.4.4 SELECT FOR UPDATE游标 208

10.5 游标变量 211

10.5.1 声明游标变量 212

10.5.2 控制游标变量 213

10.6 小结 219

10.5.3 使用游标变量的限制 219

10.7 练习 220

11.1 触发器 221

第11章 触发器 221

11.2 DML触发器 222

11.2.1 创建DML触发器 223

11.2.2 访问行触发器中的列值 224

11.3 使用DML触发器 225

11.2.3 条件谓词 225

11.3.1 维护数据完整性 226

11.3.2 维护修改的历史日志 230

11.4 系统触发器 232

11.4.2 事件属性 233

11.4.1 创建系统触发器 233

11.4.3 系统触发器的例子 234

11.5.1 替代触发器的创建 237

11.5 替代触发器 237

11.5.2 替代触发器的编写 238

11.6.2 触发器和处理远程的例外 240

11.6.1 在触发器体的错误条件和例外 240

11.5.3 视图所包括的嵌套表上的列的触发器 240

11.6 触发器的例外 240

11.7 小结 241

11.8 练习 242

12.1 事务管理 243

第12章 事务管理和锁定 243

12.1.2 ROLLBACK(回滚) 244

12.1.1 COMMIT(提交) 244

12.1.3 SAVEPOINT(保存点) 245

12.1.4 SET TRANSACTION 247

12.2 锁定 249

12.1.6 RELEASE 249

12.1.5 分布式事务的管理 249

12.2.1 表锁定 250

12.2.3 显式的锁定 251

12.2.2 锁定记录 251

12.2.5 DBMS_LOCK包 252

12.2.4 其他的锁定 252

12.4 练习 255

12.3 小结 255

第13章 集合 256

13.1 集合概述 256

13.2 索引表 257

13.2.2 向索引表中插入数据 258

13.2.1 定义索引表 258

13.2.3 引用索引表的值 261

13.3.1 声明嵌套表 263

13.3 嵌套表 263

13.3.2 嵌套表的初始化和赋值 264

13.3.3 数据库中的嵌套表 267

13.4.1 定义变长数组 270

13.4 变长数组 270

13.4.2 初始化变长数组 271

13.5.1 EXISTS方法 272

13.5 使用集合方法 272

13.4.3 数据库中的数组 272

13.5.2 COUNT方法 273

13.5.3 LIMIT方法 274

13.5.6 EXTED方法 275

13.5.5 PRIOR和NEXT方法 275

13.5.4 FIRST和LAST方法 275

13.5.7 DELETE和TRIM方法 277

13.5.8 把方法用于集合参数 280

13.6 集合的异常处理 281

13.7 批联编 283

13.7.1 使用FORALL语句 284

13.7.2 使用BULK COLLECT 289

13.9 练习 293

13.8 小结 293

14.1.1 对象(Object) 294

14.1 面向对象的基本概念 294

第14章 PL/SQL对象类型 294

14.1.2 类(Class) 295

14.1.3 继承(Inheritance) 296

14.2.1 为什么使用对象 297

14.2 对象类型 297

14.1.4 多态性 297

14.2.3 对象类型的组成 298

14.2.2 对象类型的结构 298

14.3.1 对象类型的定义 299

14.3 定义对象类型 299

14.3.2 SELF参数 303

14.3.3 PL/SQL的继承 304

14.3.4 更改和删除对象类型 305

14.4.1 声明对象 307

14.4 声明并初始化对象 307

14.4.2 构造函数与初始化对象 308

14.5.1 存取属性 310

14.5 对象的使用 310

14.5.2 调用构造函数 312

14.5.3 调用方法 313

14.6 按列存储对象 314

14.7.1 创建对象表 317

14.7 对象表 317

14.7.3 检索对象表中的对象 318

14.7.2 向对象表中添加对象 318

14.7.4 更新对象表 320

14.7.5 删除对象表的对象 321

14.8.1 引用 322

14.8 共享对象 322

14.8.2 REF和DEREF函数 324

14.8.3 前期类型定义 325

14.9.1 MAP方法 326

14.9 比较对象 326

14.9.2 ORDER方法 327

14.10 小结 329

14.9.3 指导要点 329

14.11 练习 330

15.1 调试语法错误 331

第15章 跟踪和调试 331

15.2 调试逻辑错误 335

15.2.1 逻辑错误例子 336

15.2.2 逻辑错误解决 337

15.3.1 在程序中插入调试用表 339

15.3 使用工具调试程序 339

15.3.2 DBMS-OUTPUT包 345

15.4 程序的规划与代码编写 348

15.4.2 编制代码 349

15.4.1 程序结构的规划 349

15.6 练习 350

15.5 小结 350

15.4.3 格式化代码 350

16.1 什么是动态SQL 352

第16章 本机动态SQL 352

16.3 使用EXECUTE IMMEDIATE语句 353

16.2 动态SQL的两种方法 353

16.3.1 执行DDL 354

16.3.3 绑定变量 355

16.3.2 执行PL/SQL块 355

16.4 使用OPEN-FOR、FETCH和CLOSE语句 358

16.5 使用批动态SQL 360

16.5.1 批EXECUTE IMMEDIATE 361

16.5.2 批FETCH 362

16.5.3 批FORALL 363

16.6.2 使用重复的占位符 365

16.6.1 改进性能 365

16.6 动态SQL的技巧 365

16.6.3 使用游标属性 366

16.6.5 远程操作 367

16.6.4 传递Null参数 367

16.6.6 使用调用者特权 368

16.8 练习 369

16.7 小结 369

16.6.7 避免死锁 369

17.1 DBMS_OUTPUT包 370

第17章 输入与输出 370

17.1.2 启用DBMS_OUTPUT包 371

17.1.1 使用DBMS_OUTPUT包 371

17.1.4 将数据写到缓冲区 372

17.1.3 关闭DBMS_OUTPUT包 372

17.1.6 应用举例 373

17.1.5 从缓冲区中读取数据 373

17.2.1 安全性 378

17.2 UTL_FILE包 378

17.2.2 使用UTL_FILE包函数与文件I/O步骤 379

17.2.4 文件的打开与关闭 380

17.2.3 UTL_FILE引发的异常 380

17.2.5 文件输出 382

17.4 练习 386

17.3 小结 386

17.2.6 文件输入 386

第18章 会话间通信 387

18.1 DBMS_SESSION 388

18.1.3 CLEAR_CONTEXT 389

18.1.2 SET_CONTEXT 389

18.1.1 SET_IDENTIFIER 389

18.1.7 SET_NLS 390

18.1.6 SET_SQL_TRACE 390

18.1.4 CLEAR_IDENTIFIER 390

18.1.5 SET_ROLE 390

18.1.10 UNIQUE_SESSION_ID函数 391

18.1.9 RESET_PACKAGE 391

18.1.8 CLOSE_DATABASE_LINK 391

18.1.14 FREE_UNUSED_USER_MEMORY 392

18.1.13 SET_CLOSE_CACHED_OPEN_CURSORS 392

18.1.11 IS_ROLE_ENABLED函数 392

18.1.12 IS_SESSION_ALIVE函数 392

18.1.15 LIST_CONTEXT 394

18.1.16 SWITCH_CURRENT_CONSUMER_GROUP 395

18.2 DBMS_ALERT 396

18.2.3 报警使用机制 397

18.2.2 常见错误 397

18.2.1 包DBMS_ALERT中常量的定义 397

18.2.5 DBMS_ALERT子程序的概述 398

18.2.4 检查报警 398

18.3 DBMS_PIPE 401

18.3.1 公有管道和私有管道 403

18.3.2 DBMS_PIPE子程序的概述 405

18.5 练习 422

18.4 小结 422

19.1 高级队列简介 424

第19章 高级队列 424

19.1.4 队列监视 428

19.1.3 传播特征 428

19.1.1 异步消息通知 428

19.1.2 监听功能 428

19.2.1 为负载定义一个类型 429

19.2 队列使用 429

19.2.2 CREATE_QUEUE_TABLE 430

19.2.4 DROP_QUEUE_TABLE 432

19.2.3 ALTER_QUEUE_TABLE 432

19.2.5 CREATE-QUEUE 433

19.2.7 ALTER_QUEUE 434

19.2.6 CREATE_NP_QUEUE 434

19.2.11 ENQUEUE 435

19.2.10 STOP_QUEUE 435

19.2.8 DROP_QUEUE 435

19.2.9 START_QUEUE 435

19.2.12 DEQUEUE 436

19.2.13 Message Properties 438

19.2.15 AQ$_AGENT对象类型 439

19.2.14 记录ENQUEUE_OPTIONS_T 439

19.2.17 Dequeue Options Type 440

19.2.16 AQ$_RECIPIENT_LIST_T对象类型 440

19.3.1 GRANT_SYSTEM_PRIVILEGE 441

19.3 其他AQ过程 441

19.3.4 REVOKE_QUEUE_PRIVILEGE 442

19.3.3 GRANT_QUEUE_PRIVILEGE 442

19.3.2 REVOKE_SYSTEM_PRIVILEGE 442

19.4 AQ中级知识 443

19.4.4 AQ执行发布/订阅 444

19.4.3 接收者列表 444

19.4.1 订阅者列表和接收者列表 444

19.4.2 订阅者列表 444

19.4.5 AQ Recipient List Type(接收者列表数据类型) 445

19.4.10 LISTEN过程 446

19.4.9 AQ Registration Info List Type 446

19.4.6 AQ Agent List Type(代理列表类型) 446

19.4.7 AQ Subscriber List Type(订阅者列表类型) 446

19.4.8 AQ Registration Info Type(AQ注册信息类型) 446

19.4.11 REGISTER过程 447

19.4.14 ALTER_SUBSCRIBER过程 448

19.4.13 ADD_SUBSCRIBER过程 448

19.4.12 UNREGISTER过程 448

19.4.16 SCHEDULE_PROPAGATION过程 449

19.4.15 REMOVE_SUBSCRIBER过程 449

19.4.18 VERIFY_QUEUE_TYPES过程 450

19.4.17 UNSCHEDULE_PROPAGATION过程 450

19.5.1 创建队列表和队列 451

19.5 AQ实例 451

19.4.19 ALTER_PROPAGATION_SCHEDULE过程 451

19.4.20 ENABLE_PROPAGATION_SCHEDULE过程 451

19.4.21 DISABLE_PROPAGATION_SCHEDULE过程 451

19.5.2 消息入队出队 452

19.5.3 消息传播 463

19.6 小结 465

19.5.4 删除AQ对象 465

19.7 练习 466

20.1 如何运行作业 467

第20章 数据库作业管理 467

20.2.1 DBMS_JOB包 469

20.2 管理作业队列 469

20.2.2 作业环境(Job Environment) 476

20.2.3 作业的导入导出(Import/Export) 477

20.4 练习 482

20.3 小结 482

21.1.1 什么是大型对象 483

21.1 大型对象类型概述 483

第21章 大型对象 483

21.1.2 大型对象数据类型 484

21.1.3 可变宽度(Varying-Width)字符数据 485

21.1.4 大型对象值和定位器 486

21.1.5 创建包含大型对象的表 488

21.2 Oracle 9i中大型对象的新特征 490

21.3.1 DBMS_LOB包函数/过程介绍 491

21.3 用PL/SQL的DBMS_上OB包 491

21.3.3 DBMS_LOB包的数据类型,常数及异常 493

21.3.2 DBMS_LOB包的大型对象定位器 493

21.3.4 DBMS_LOB包的规则和限制 494

21.4.2 打开BFILE 498

21.4.1 创建目录对象 498

21.4 使用外部大型对象BFILE 498

21.4.4 函数FILEEXISTS 499

21.4.3 函数FILEISOPEN 499

21.4.6 获得文件信息 500

21.4.5 关闭文件的过程 500

21.4.7 读文件操作 501

21.4.8 比较两个文件内容 502

21.4.9 INSTR函数 503

21.5 使用外部大型对象BFILE的范例 504

21.4.10 SUBSTR函数 504

21.6 使用内部大型对象 506

21.6.2 COMPARE函数 507

21.6.1 APPEMD过程 507

21.6.3 COPY过程 508

21.6.5 ERASE过程 510

21.6.4 EMPTY_BLOB和EMPTY_CLOB函数 510

21.6.7 INSTR函数 511

21.6.6 GETLENGTH函数 511

21.6.8 READ过程 512

21.6.9 SUBSTR函数 513

21.6.10 TRIM过程 515

21.6 11 WRITE过程 515

21.6.12 WRITEAPPEND过程 516

21.7 使用内部大型对象的范例 517

21.7.1 向内部LOB拷贝数据 518

21.7.3 分析内部LOB内容 520

21.7.4 编辑内部LOB对象 522

21.8 临时大型对象 523

21.8.1 临时大型对象概述 523

21.8.2 临时大型对象的使用 524

21.9.1 LONG与LOB数据类型的比较 526

21.9 LONG与LOB数据类型 526

21.9.2 LONG与LOB数据类型的转换 527

21.10 小结 528

21.11 练习 528

第22章 开发Web应用程序 529

22.1 PL/SQL Web应用程序概念 529

21.7.2 向内部LOB中添加数据 529

22.1.1 使用PL/SQL存储过程和函数 530

22.1.2 PL/SQL Server Pages 530

22.2.1 安装Oracle HTTP Server 531

22.2 设置和检验PL/SQL服务器页 531

22.2.2 创建一个PSP文件 531

22.1.3 为XML启用PL/SQL Web应用程序 531

22.2.3 将PSP文件导入到数据库 532

22.2.4 设置Oracle HTTP Server 532

22.2.5 从浏览器中调用PSP 533

22.3.1 从HTML表单中传递列表框或微调框参数 534

22.3.2 从HTML表单中传递单选按钮或复选框参数 534

22.3 PL/SQL Web应用程序的参数传递 534

22.3.3 从HTML表单传递输入域参数 535

22.3.5 提交一张完整的HTML表单 537

22.3.6 从HTML表单中处理丢失的输入 537

22.3.4 从HTML表单中传递隐藏参数的值 537

22.4 在PL/SQL存储过程中执行网络操作 538

22.4.1 从PL/SQL中发送邮件 538

22.3.7 在网页之间维护状态信息 538

22.4.3 在PL/SQL中操作TCP/IP连接 539

22.4.4 从PL/SQL中检索一个HTTP URL的内容 539

22.4.2 从PL/SQL中得到一个主机名或地址 539

22.4.5 操作表格、图像、Cookies和CGI变量 542

22.5 PL/SQL Server Pages 542

22.5.1 选择一个软件配置 543

22.5.2 为PL/SQL服务器页编写代码和内容 543

22.5.3 把PL/SQL服务器页装载到数据库存储过程 549

22.6 PL/SQL Server Pages实例 550

22.6.1 一次性显示表的内容 551

22.6.2 使用循环打印表的内容 551

22.6.3 用户选择 552

22.6.4 调用PL/SQL服务器页的HTML表单 554

22.6.5 在PSP文件中包含JavaScript 554

22.6.6 调试PL/SQL Server Pages 556

22.6.7 将PSP应用程序加入产品 557

22.8 练习 558

第23章 调整PL/SQL应用程序 559

23.1 PL/SQL性能问题的原因 559

23.2 识别PL/SQL性能问题 563

23.2.1 剖析API:DBMS_PROFILER包 563

23.2.2 跟踪API:DBMS_TRACE包 564

23.3 性能调整的PL/SQL特征 564

23.3.1 通过本机动态SQL改进PL/SQL性能 565

23.3.2 通过批联编提高PL/SQL性能 565

23.3.4 使用RETURNING子句提高PL/SQL性能 566

23.3.5 使用外部程序提高PL/SQL性能 566

23.3.3 使用NOCOPY编译器提示来提高PL/SQL性能 566

23.3.6 使用对象类型和集合来提高PL/SQL性能 567

23.3.7 编译PL/SQL代码以便于本地执行 567

23.4 小结 569

附录一 PL/SQL保留字 570

附录二 部分练习答案 572

附录三 部分表结构 584

附录四 SQL*Plus的使用 589

F4.1 启动SQL*Plus 589

F4.2 输入和执行命令 590

F4.3 编辑SQL命令 593

F4.4 创建和修改命令文件 596

F4.5 环境变量的设置和保存 598

F4.6 编写交互命令 599

F4.7 格式化查询结果 602

返回顶部