当前位置:首页 > 工业技术
21天学通PL/SQL
21天学通PL/SQL

21天学通PL/SQLPDF电子书下载

工业技术

  • 电子书积分:17 积分如何计算积分?
  • 作 者:(美)Jonathan Gennick,(美)Tom Luers著;袁国忠,陈文飞译
  • 出 版 社:北京:人民邮电出版社
  • 出版年份:2000
  • ISBN:7115086885
  • 页数:570 页
图书介绍:
《21天学通PL/SQL》目录
标签:

第1部分 第1周课程 1

第1章 第1天课程:学习PL/SQL基础知识 3

1.1 PL/SQL是什么 3

1.2 为什么要学习PL/SQL 4

1.3 SQL、SQL*Plus、PL/SQL之间的差别 4

1.3.1 SQL 5

1.3.2 PL/SQL 5

1.3.3 SQL*Plus 5

1.3.4 阅读本书需要的资源 6

1.4 开始使用PL/SQL 8

1.4.1 PL/SQL是块结构化的 8

1.4.2 编译和执行简单的块 9

1.4.3 生成输出结果 10

1.4.4 避免重新输入 11

1.4.5 编写第一个函数 12

1.4.6 查找编译错误 13

1.4.7 显示函数的返回值 14

1.5.1 启动过程生成器 15

1.4.8 这个简单的函数有用吗 15

1.5 使用Developer/2000中的过程生成器执行PL/SQL 15

1.5.2 使用交互式PL/SQL 16

1.5.3 创建SS_THRESH函数 17

1.5.4 与数据库相连 18

1.6 使用SQLPlus Wroksheet 18

1.6.1 使用SQLPlus Wroksheet执行PL/SQL块 19

1.7 总结 19

1.8 问与答 20

1.9 测验和练习 20

1.9.1 测验 20

1.9.2 练习 21

第2章 第2天课程:编写声明和块 23

2.1 探讨数据类型 23

2.1.1 VARCHAR2 25

2.1.2 VARCHAR2的子类型 25

2.1.3 CHAR 25

2.1.5 NUMBER 27

2.1.4 CHAR子类型 27

2.1.6 BINARY_INTEGER 29

2.1.7 PLS_INTEGER 32

2.1.8 DATE 32

2.1.9 BOOLEN 33

2.1.10 LONG 33

2.1.11 RAW 34

2.1.12 LONG RAW 34

2.1.15 MSLABEL 35

2.2 使用块结构 35

2.1.13 ROWID 35

2.1.14 UROWID 35

2.2.1 匿名块 36

2.2.2 函数和过程块 37

2.2.3 触发器块 39

2.2.4 嵌套块 40

2.2.5 嵌套函数和过程 42

2.2.6 作用域规则 45

2.3 总结 46

2.4 问与答 47

2.5 测验和练习 47

2.5.1 测验 47

2.5.2 练习 47

第3章 第3天课程:编写PL/SQL表达式 49

3.1 理解操作符、表达式和转换 49

3.2 使用PL/SQL操作符建立表达式 50

3.2.1 算术操作符 50

3.2.2 比较操作符 53

3.2.3 逻辑操作符 59

3.2.4 字符串操作符 61

3.3 对字符串使用比较操作符 62

3.3.1 字符集对字符串比较的影响 62

3.3.2 大小写对字符串比较的影响 64

3.4 对日期使用比较操作符 65

3.5 使用表达式 66

3.5.1 定义表达式 66

3.5.2 操作符优先级 67

3.5.4 表达式中的空值 68

3.5.3 表达式类型 68

3.6.1 隐式转换 73

3.6 转换数据类型 73

3.6.2 显式转换 75

3.7 总结 76

3.8 问与答 77

3.9 测验和练习 78

3.9.1 测验 78

3.9.2 练习 78

4.1 使用PL/SQL函数 79

第4章 第4天课程:使用函数、IF语句和循环 79

4.1.1 定义参数:形参和实参 81

4.1.2 返回类型 83

4.1.3 函数违规 84

4.1.4 异常处理 84

4.1.5 创建存储函数 84

4.1.6 查找错误 86

4.2.2 如何从PL/SQL中使用或不使用参数调用函数 87

4.2 NULL语句 87

4.2.1 为何使用NULL语句 87

4.2.3 调用者和定义者的权限 88

4.3 使用PL/SQL语句 89

4.3.1 IF语句 89

4.3.2 IF…THEN…ELSE语句 90

4.3.3 嵌套IF语句 91

4.3.4 使用IF…ELSIF语句 93

4.3.5 嵌套IF语句和ELSIF语句 95

4.3.6 格式化IF语句 95

4.3.7 避免IF语句中的常见错误 96

4.3.8 循环语句 96

4.3.9 反向循环 97

4.3.10 修改步长 98

4.4 总结 99

4.5 问与答 99

4.6.1 测验 100

4.6.2 练习 100

4.6 测验和练习 100

第5章 第5天课程:实现循环和GOTO语句 101

5.1 探讨标号和GOTO语句 101

5.1.1 语句标号 101

5.1.2 GOTO语句 102

5.1.3 GOTO语句的作用域规则 102

5.1.4 使用GOTO语句的范例 105

5.2 WHILE循环 106

5.2.1 WHILE循环范例 106

5.1.5 为何使用GOTO语句 106

5.3 EXIT语句和EXIT WHEN语句 110

5.3.1 使用EXIT和EXIT WHEN语句的范例 110

5.3.2 在循环中使用标号和EXIT语句 113

5.4 简单循环 114

5.4.1 简单循环范例 115

5.4.2 创建一个REPEAT…UNTIL循环 115

5.4.3 模仿的REPEAT…UNTIL循环范例 116

5.5 应该使用哪种循环 116

5.6.1 循环的格式 117

5.6 使用循环的指导原则 117

5.7 递归 119

5.7.1 准则 119

5.7.2 练习使用递归 119

5.7.3 为何使用递归 121

5.8 总结 122

5.9 问与答 122

5.10 测验和练习 122

5.10.2 练习 123

5.10.1 测验 123

第6章 第6天课程:使用Oracle的内置函数 125

6.1 SQL函数和PL/SQL函数的比较 125

6.2 主要的函数类型 126

6.3 试验函数 129

6.4 使用转换函数 130

6.4.1 使用TO_DATE函数 130

6.4.2 使用TO_CHAR 134

6.4.3 使用TO_NUMBER 136

6.4.4 使用TO_CHAR函数 140

6.5.1 SYSDATE函数 141

6.5 日期函数 141

6.5.2 TRUNC函数 142

6.5.3 ADD_MONTHS函数 144

6.5.4 NEXT_DAY函数 144

6.5.5 LAST_DAY函数 146

6.5.6 MONTHS_BETWEEN0函数 147

6.5.7 NEW_TIME函数 147

6.5.9 TRIM函数 149

6.5.8 ROUND函数 149

6.6 总结 150

6.7 问与答 150

6.8 测验和练习 151

6.8.1 测验 151

6.8.2 练习 151

第7章 第7天课程:过程、包、错误和异常 153

7.1 使用过程 153

7.1.3 创建过程 154

7.1.1 为何使用过程 154

7.1.2 过程和函数 154

7.1.4 RETURN语句 155

7.1.5 过程依赖性 155

7.1.6 重新编译存储过程 156

7.1.7 重新创建和修改函数 156

7.1.8 调用存储过程 157

7.1.9 使用参数 158

7.1.10 参数定义 158

7.1.11 列出存储过程的信息 158

7.1.12 删除存储过程 159

7.1.13 重载过程 159

7.1.14 使用递归过程 160

7.2 过程调用的安全性 161

7.3 探讨包 161

7.3.1 为何使用包 162

7.3.2 包规范 162

7.3.3 包体 163

7.3.4 创建包 164

7.3.5 调用包子程序 165

7.3.6 重新编译包 166

7.3.7 公有和私有包对象 166

7.3.8 包调用的安全性 166

7.3.9 变量、游标和常量的持续性 167

7.3.10 包状态 167

7.3.11 包的依赖性 167

7.4 捕获错误和异常 167

7.4.1 异常处理结构 168

7.4.2 SQLCODE和SQLERRM函数 171

7.4.3 发生异常后继续处理 173

7.4.4 发生异常后重试 174

7.4.5 重新引发异常 175

7.5 总结 176

7.6 问与答 176

7.4.7 传播异常 176

7.4.6 异常的作用域规则 176

7.7 测验和练习 177

7.7.1 测验 177

7.7.2 练习 177

第1周 课程复习 178

第2部分 第2周课程 179

第8章 第8天课程:使用SQL 181

8.2 创建一些Oracle表 182

8.1 SQL DML语句的类型 182

8.3 使用INSERT语句 184

8.3.1 插入一些数据 185

8.4 单个的SELECT语句 187

8.4.1 SELECT语句范例 187

8.5 使用UPDATE语句和DELETE语句 188

8.6 异常处理类型 189

8.7 使用LOCK TABLE语句 190

8.8 事务控制语句 191

8.9 使用记录 191

8.9.1 声明记录变量 191

8.9.3 使用基于数据库表的记录变量 192

8.9.2 使用%TYPE属性 192

8.9.4 使用记录变量和SELECT语句 193

8.9.5 使用基于游标定义的记录变量 195

8.9.6 包层次的声明 196

8.10 伪列 197

8.10.1 CURRVAL伪列和NEXTVAL伪列 197

8.10.2 ROWID伪列 197

8.12 问与答 198

8.11 总结 198

8.10.3 ROWNUM伪列 198

8.13 测验和练习 199

8.13.1 测验 199

8.13.2 练习 199

第9章 第9天课程:使用游标操纵数据 201

9.1 什么是游标 201

9.2 显式游标 202

9.2.1 声明游标 202

9.2.2 声明游标参数 203

9.2.3 打开游标 204

9.2.4 将数据取回到游标中 205

9.2.5 关闭游标 206

9.2.6 显式游标的属性 206

9.3 显式游标范例 208

9.3.1 使显式游标自动化 209

9.4 隐式游标 210

9.4.1 隐式游标的属性 210

9.5 游标参数的作用域 212

9.6 游标RETURN子句和包 212

9.7.1 声明游标变量 213

9.7 游标变量 213

9.7.2 通过游标变量使用游标 214

9.7.3 将游标变量赋给其他变量 215

9.7.4 将游标变量作为参数 215

9.8 游标的当前记录 217

9.9 游标的作用域 217

9.10 游标别名 218

9.13.1 测验 219

9.13 测验和练习 219

9.12 问与答 219

9.11 总结 219

9.13.2 练习 220

第10章 第10天课程:集合 221

10.1 使用PL/SQL索引表 221

10.1.1 声明索引表 222

10.1.2 将条目插入到索引表中 222

10.1.3 引用索引表中的值 224

10.1.5 删除表中的条目 225

10.1.4 修改表中的条目 225

10.1.6 PL/SQL表的方法 227

10.2 使用嵌套表 229

10.2.1 声明嵌套表 229

10.2.2 给嵌套表添加条目 230

10.2.3 删除嵌套表中的条目 233

10.3 使用变长数组 236

10.3.1 声明和初始化变长数组 236

10.3.2 给变长数组添加和删除数据 237

10.4.1 使用BULK COLLECT 239

10.4 使用批绑定 239

10.4.2 使用FORALL 241

10.5 集合的异常处理 242

10.6 总结 243

10.7 问与答 243

10.8 测验和练习 244

10.8.1 测验 244

10.8.2 练习 244

11.1 什么是触发器 245

第11章 第11天课程:编写数据库触发器 245

11.2 DML触发器 246

11.2.1 DML触发器范例 246

11.2.2 DML触发器分类 247

11.2.3 定义数据库触发器的语法 249

11.3 触发器的用途 250

11.3.1 维护数据完整性 250

11.3.2 维护历史记录 254

11.4.1 列出触发器 257

11.4 管理触发器 257

11.4.2 查看触发器的代码 258

11.4.3 打开和关闭触发器 260

11.5 非传统触发器 261

11.5.1 定义作用于数据库事件或模式事件的触发器的语法 261

11.5.2 事件属性 262

11.5.3 编写一个数据库事件触发器 263

11.5.4 编写DDL事件触发器 265

11.6 使用替代触发器 266

11.6.2 编写一个替代触发器 267

11.6.1 定义替代触发器的语法 267

11.7 探讨触发器的局限性 269

11.7.1 触发器和变化表 269

11.8 总结 278

11.9 问与答 278

11.10 测验和练习 279

11.10.1 测验 279

11.10.2 练习 279

12.1 面向对象编程的基本知识 281

第12章 第12天课程:将Oracle8i对象用于面向对象编程 281

12.1.1 封装 282

12.1.2 继承 282

12.1.3 多态 282

12.1.4 类、对象、属性和方法 283

12.1.5 OOP优于传统方法的地方 283

12.2 Oracle8i是如何实现对象的 283

12.3 定义对象类型 284

12.2.3 对象视图 284

12.2.2 对象表 284

12.2.1 对象类型 284

12.3.1 构造函数 288

12.3.2 取值方法 288

12.3.3 赋值方法 289

12.4 实例化和使用对象 289

12.5 存储和检索对象 292

12.5.1 将对象存储为表字段 292

12.5.2 检索和更新表字段中的对象 293

12.6 使用对象表 295

12.6.1 将对象存储在对象表中 297

12.6.2 检索和更新对象表中的对象 298

12.6.3 删除对象表中的对象 300

12.7 嵌套和共享对象 301

12.7.1 点号表示法 301

12.7.2 对象引用 302

12.8 探讨SELF参数 305

12.9 重载 306

12.10 比较对象 307

12.10.1 ORDER方法 308

12.10.2 MAP方法 309

12.11 Oracle实现的局限性 310

12.12 总结 310

12.13 问与答 310

12.14 测验和练习 311

12.14.1 测验 311

12.14.2 练习 311

13.1.1 识别语法错误 313

第13章 第13天课程:调试代码并防止错误 313

13.1 定位并消除语法错误 313

13.1.2 一个识别语法错误的范例 315

13.1.3 防止语法错误 319

13.2 处理逻辑错误 320

13.2.1 操作次序 320

13.2.2 死循环 321

13.2.3 逻辑错误的排除方法 321

13.3.1 将DBMS_OUTPUT用做调试工具 324

13.3 使用工具帮助调试程序 324

13.3.2 编写DEBUG包 325

13.4 防止错误并规划以后的调试 330

13.4.1 定义需求和规划项目 330

13.4.2 使用模块化方法编码 331

13.4.3 注释代码 331

13.4.4 在代码中编写断言 333

13.4.5 格式化代码 335

13.6 问与答 337

13.5 总结 337

13.7.1 测验 338

13.7.2 练习 338

13.7 测验和练习 338

第14章 第14天课程:使用大型对象类型 339

14.1 探讨大型对象数据类型 339

14.1.1 LOB的局限性 340

14.1.2 LOB和LONG数据类型的比较 340

14.1.3 将LONG转换为LOB 341

14.2 在Oracle8i数据库中使用外部文件 341

14.2.1 创建目录对象 341

14.2.2 BFILE的局限性 342

14.3 将DBMS_LOB包用于BFILE 342

14.3.1 BFILENAME函数 343

14.3.2 COMPARE函数 343

14.3.5 FILEEXISTS函数 344

14.3.6 FILEGETNAME过程 344

14.3.3 FILECOLOSE过程 344

14.3.4 FILECLOSEALL过程 344

14.3.7 FILEISOPEN函数 345

14.3.8 FILEOPEN过程 345

14.3.9 GETLENGTH函数 345

14.3.10 INSTR函数 346

14.3.11 READ过程 346

14.4 使用DMBS_LOB包的BFILE范例 347

14.4.1 访问BFILE 347

14.3.12 SUBSTR函数 347

14.4.2 比较文件 349

14.5 使用定位器 351

14.6 将DBMS_LOB包用于内部LOB 352

14.6.1 APPEND过程 352

14.6.2 COMPARE函数 353

14.6.3 COPY过程 353

14.6.4 EMPTY_BLOB函数 354

14.6.5 EMPTY_CLOB函数 354

14.6.8 INSTR函数 355

14.6.7 GETLENGTH函数 355

14.6.6 ERASE过程 355

14.6.9 READ过程 356

14.6.10 SUBSTR函数 357

14.6.11 TRIM过程 357

14.6.12 WRITE过程 358

14.7 使用DMBS_LOB包的内部LOB范例 358

14.7.1 创建一个表 358

14.7.2 给表添加数据 359

14.7.3 使用COPY过程将数据添加到表LOBS中 360

14.7.4 使用APPEND和WRITE操纵内部LOB 361

14.7.5 分析内部LOB的内容 363

14.7.6 使用TRIM和ERASE编辑CLOB 364

14.8 临时LOB 366

14.8.1 管理临时LOB 366

14.8.2 创建临时LOB 366

14.10 问与答 367

14.11 测验和练习 367

14.9 总结 367

14.11.1 测验 368

14.11.2 练习 368

第2周课程复习 369

第3部分 第3周课程 371

第15章 第15天课程:管理事务和锁定 373

15.1 事务类型 373

15.2 开始事务 374

15.3 结束事务 375

15.4 撤销事务 376

15.5 两步提交 376

15.6 使用保存点创建书签 377

15.7 使用RELEASE选项 377

15.8 使用锁定 378

15.8.1 锁定表 378

15.8.2 锁定记录 379

15.8.3 显式锁定 379

15.8.4 DBMS_LOCK包 379

15.8.6 监视锁定 382

15.8.5 使用其他锁定 382

15.9 总结 383

15.10 问与答 383

15.11 测验和练习 383

15.11.1 测验 383

15.11.2 练习 383

第16章 第16天课程:生成动态SQL 385

16.1 什么是动态SQL,为何使用它 385

16.2 两种使用动态SQL的方法 386

16.3 使用DBMS_SQL包 387

16.3.1 使用DBMS_SQL包执行非查询DDL和DML语句 387

16.3.2 使用DBMS_SQL包执行查询 393

16.3.3 使用DBMS_SQL包执行匿名PL/SQL块 401

16.3.4 处理DBMS_SQL错误 404

16.3.5 使用LAST_ROW_COUNT 404

16.3.6 使用LAST_ROW_ID 405

16.4.1 执行DML和DDL 407

16.4 使用本机动态SQL 407

16.3.7 使用LAST_ERROR_POSITON 407

16.4.2 执行SQL查询 410

16.4.3 执行PL/SQL块 412

16.5 总结 413

16.6 问与答 413

16.7 测验和练习 414

16.7.1 测验 414

16.7.2 练习 414

17.1 DBMS_OUTPUT包 415

第17章 第17天课程:将数据写到文件和显示屏 415

17.1.1 开启DBMS_OUTPUT包 416

17.1.2 关闭DBMS_OUTPUT包 416

17.1.3 将数据写到缓冲区 417

17.1.4 从缓冲区读取数据 418

17.1.5 DBMS_OUTPUT包引发的异常 422

17.2 使用UTL_FILE包读写文件 423

17.2.1 文件输入 423

17.2.2 使用UTL_FILE过程和函数 424

17.2.4 使用UTL_FILE的范例 429

17.2.3 FFLUSH过程 429

17.3 将TEXT_IO用于客户文件 432

17.4 总结 434

17.5 问与答 434

17.6 测验和练习 435

17.6.1 测验 435

17.6.2 练习 435

18.1 使用DBMS_JOB包提交作业 437

第18章 第18天课程:管理数据库作业 437

18.2 使用后台进程 438

18.3 执行作业 439

18.3.1 使用SUBMIT将作业提交给作业队列 439

18.3.2 使用RUN立刻执行作业 441

18.3.3 探讨作业环境 441

18.4 查看作业 443

18.4.1 查看作业的范例 444

18.5 作业管理 445

18.5.1 删除作业 446

18.5.2 修改作业 446

18.5.3 导入和导出作业 447

18.5.4 处理损坏的作业 447

18.6 练习管理作业 448

18.6.1 创建作为作业提交的过程 448

18.6.2 将所有的作业提交给作业队列 450

18.6.3 立刻运行所有的三个作业 450

18.6.4 查看关于作业的信息 451

18.6.5 通过运行HELLO作业修改作业 452

18.6.6 删除Hello作业 453

18.7 总结 454

18.8 问与答 454

18.9 测验和练习 455

18.9.1 测验 455

18.9.2 练习 455

第19章 第19天课程:报警以及与其他过程通信:DBMS_ALERT和DBMS_PIPE包 457

19.1 DBMS_ALERT包 457

19.3 注册报警 458

19.2 使用SIGNAL发布报警 458

19.4 等待特定的报警 459

19.5 等待所有已注册的报警 459

19.6 删除一个报警 460

19.7 删除所有的报警 460

19.8 SET_DEFAULTS过程涉及的轮讯和事件 460

19.9 演示DBMS_ALERT包的用法 460

19.9.1 创建备份数据库 461

19.9.2 创建触发器,以发送报警 462

19.9.3 等待报警 463

19.10 DBMS_PIPE包 466

19.10.1 公有管道和私有管道 467

19.10.2 使用管道 467

19.10.3 DMBS_PIPE中的函数和过程 468

19.10.4 使用管道的范例 472

19.10.5 其他管道函数和过程 475

19.10.6 管道的其他用途 476

19.11 报警和管道的比较 476

19.13 问与答 477

19.12 总结 477

19.14.1 测验 478

19.14.2 练习 478

19.14 测验和练习 478

第20章 第20天课程:PL/SQL和Java 479

20.1 使用Oracle的Java引擎 479

20.2 PL/SQL将被淘汰吗 480

20.3 创建Java过程 481

20.3.1 需要的前提条件 481

20.3.3 装载类 482

20.3.2 SS_CONSTANTS类 482

20.3.4 公布SSThresh方法 484

20.3.5 在SQL*Plus中调用SS_THRESH 485

20.3.6 在PL/SQL中调用SS_THRESH 485

20.3.7 删除SSContants类 486

20.4 从PL/SQL中调用Java 487

20.4.1 Employee类 487

20.4.2 公布Java方法 489

20.4.3 数据类型兼容性 491

20.4.4 使用OUT和IN OUT参数 493

20.5 使用SQLJ从Java中调用PL/SQL 495

20.5.1 使用SQLJ执行匿名PL/SQL块 495

20.5.2 使用SQLJ调用PL/SQL过程或函数 497

20.6 总结 500

20.7 问与答 500

20.8 测验和练习 500

20.8.2 练习 501

20.8.1 测验 501

第21章 第21天课程:高级排队 503

21.1 什么是AQ 503

21.1.1 揭开AQ的神秘面纱 504

21.1.2 AQ的重要特性 505

21.2 配置服务器,以便使用AQ 505

21.3 探讨AQ方案 506

21.4 创建一个消息队列 507

21.4.1 为负载定义一个类型 507

21.4.2 创建队列表 508

21.4.3 创建队列 510

21.5 启动和关闭队列 512

21.6 将消息放入队列 513

21.6.1 与入队相关的记录类型 513

21.6.2 将消息放入队列 516

21.7 从队列中检索消息 518

21.7.1 与出队相关的记录类型 518

21.7.2 将消息从队列中取出 519

21.8.1 删除队列 521

21.8 使用其他AQ过程 521

21.8.2 删除队列表 522

21.8.3 授予和收回访问队列的权限 522

21.9 总结 523

21.10 问与答 524

21.11 测验和练习 524

21.11.1 测验 524

21.11.2 练习 524

第3周课程复习 525

附录A 测验和练习答案 527

返回顶部