PL/SQL用户指南与参考 - 章节目录

来源:互联网 发布:海尔波士顿矩阵分析 编辑:程序博客网 时间:2024/05/17 07:19
/* banner */#banner {position:static;top: 0px;left: 0px;width: 100%;height: 98px;background-repeat:no-repeat;background-image: url(../images/banner.gif);background-position:right;} /* book name */#book {font-family: "Times New Roman", Times, serif;font-size: 42px;font-weight: bold;padding: 10px;text-align: center;}/* chapter title */#chapter {font-family: "幼圆", Georgia, "Times New Roman", Times, serif;font-size: 36px;font-weight: bold;padding: 10px;text-align: center;}/* text */#text {padding: 10px;font-family: "宋体", "SimSun", sans-serif, "Times New Roman", "Palatino Linotype", Georgia;font-size: 16px;line-height: 24px;text-indent: 32px;}/* body layout */body {padding-top: 20px;padding-right: 6%;padding-bottom: 20px;padding-left: 6%;background-color: #FFFFEE;background-image: url(../images/cr.gif);background-repeat: repeat;background-attachment: fixed;}/* titles */.title1 {font-family: "Palatino Linotype", Georgia, sans-serif, "宋体";font-size: 24px;font-weight: bold;}.title2 {font-family: "Palatino Linotype", Georgia, sans-serif, "宋体";font-size: 20px;font-weight: bold;}/* subtitle */#text ol li ol li{list-style-type: decimal;margin-left: 8px;line-height: 24px;text-indent: 0px;}/* code style */#text blockquote table tr td { padding: 10px;font-family: "Courier New";font-size: 15px;text-indent: 0px;color: #003366;background-color: #FBFEFF;border: 1px dotted #000000;line-height: 18px;}/* for keyword */#text strong {color: #000066;}/* for string */.string {color: #0000FF;}/* for comments */.comment {color: #009966;}/* illustration */#text img {margin-left: 45px;padding-left: 15px;padding: 15px;}/* table list */#table-list {margin-left: 45px;font-family: "Palatino Linotype", Georgia, sans-serif, "宋体";font-size: 14px;text-indent: 0px;border-top-width: 3px;border-bottom-width: 3px;border-top-style: solid;border-bottom-style: solid;border-top-color: #000000;border-bottom-color: #000000;}#table-list-head {padding: 5px;text-indent: 0px;background-color: #000000;color: #FFFFFF;}

第一章 PL/SQL一览

一、理解PL/SQL的主要特性

1、块结构

2、变量与常量

3、游标

4、游标FOR循环

5、游标变量

6、属性

7、控制结构

8、模块化

9、数据抽象

10、信息隐藏

11、错误控制

二、PL/SQL架构

1、Oracle数据库中

2、Oracle工具中

三、PL/SQL的优势

1、SQL的支持

2、面向对象的支持

3、良好的性能

4、高效性

5、可移植性

6、与SQL紧密结合

7、高度安全

第二章 PL/SQL基础

一、字符集

二、词法单元

1、分隔符

2、标识符

3、文字

4、注释

三、声明

1、使用DEFAULT

2、使用NOT NULL

3、使用%TYPE

4、使用%ROWTYPE

5、声明的约束

四、PL/SQL命名规范

五、PL/SQL标识符的作用域(scope)和可见度(visiblity)

六、变量赋值

1、布尔型(Boolean)赋值

2、利用SQL查询为PL/SQL变量赋值

七、PL/SQL表达式与比较

1、逻辑操作符

2、布尔表达式

3、CASE表达式

4、在比较和条件语句中处理NULL值

八、内置函数

第三章 PL/SQL数据类型

一、预定义数据类型

1、数字型

2、字符型

3、本地字符型

4、LOB类型

5、布尔类型

6、Datetime和Interval类型

7、Datetime和Interval算法

8、使用日期和时间子类型来避免"切断"问题

二、用户自定义子类型

1、定义子类型

2、使用子类型

三、数据类型转换

1、显式转换

2、隐式转换

3、显式转换 VS 隐式转换

4、DATE值

5、RAW和LONG RAW值

第四章 PL/SQL的控制结构

一、PL/SQL控制结构一览

二、条件控制:IF和CASE语句

1、IF-THEN语句

2、IF-THEN-ELSE语句

3、IF-THEN-ELSIF语句

4、CASE语句

5、PL/SQL条件控制语句使用准则

三、循环控制:LOOP和EXIT语句

1、LOOP

2、WHILE-LOOP

3、FOR-LOOP

四、顺序控制:GOTO和NULL语句

1、GOTO语句

2、NULL语句

第五章 PL/SQL集合与记录

一、什么是集合

1、理解嵌套表

2、理解变长数组

3、理解关联数组(索引表)

4、全球化设置对使用VARCHAR2类型作主键的关联数组的影响

二、集合类型的选择

1、嵌套表与关联数组间的选择

2、嵌套表与变长数组间的选择

三、定义集合类型

1、定义与PL/SQL集合类型等价的SQL类型

四、声明PL/SQL集合变量

五、初始化与引用集合

1、引用集合中的元素

六、集合的赋值

七、比较集合

八、在SQL语句中使用PL/SQL的集合类型

1、关于嵌套表的例子

2、变长数组的一些例子

3、使用SQL语句操作特定的集合元素

九、使用多级集合

十、集合的方法

1、检测集合中的元素是否存在(EXISTS)

2、计算集合中的元素个数(COUNT)

3、检测集合的最大容量(LIMIT)

4、查找集合中的首末元素(FIRST和LAST)

5、循环遍历集合中的元素(PRIOR和NEXT)

6、扩大集合的容量(EXTEND)

7、缩减集合的空间(TRIM)

8、删除集合中的元素(DELETE)

9、使用集合类型参数的方法

十一、避免集合异常

十二、使用集合批量绑定减少循环开销

1、批量绑定如何提高性能

十三、使用FORALL语句

1、FORALL语句对回滚的影响

2、使用%BULK_ROWCOUNT属性来计算FORALL语句所影响到的行数

3、使用%BULK_EXCEPTIONS属性来控制FORALL异常

十四、利用BULK COLLECTION子句为集合赋值

1、从游标中批量取得数据的例子

2、使用LIMIT子句限制FETCH操作批量取得的数据个数

3、使用RETURNING INTO子句将DML的操作结果绑定到集合

4、BULK COLLECT的限制

5、把FORALL和BULK COLLECTION结合起来使用

6、使用主数组进行批量绑定

十五、什么是记录

十六、定义和声明记录

1、声明记录

2、初始化记录

3、引用记录

4、为记录赋控值

5、为记录赋值

6、比较记录

十七、操作记录

1、向数据库插入PL/SQL记录

2、使用记录更新数据库

3、记录类型插入/更新操作的约束

4、用查询结果为记录类型的集合赋值

第六章 PL/SQL与Oracle间交互

一、PL/SQL支持的SQL一览

1、数据操作

2、事务控制

3、SQL函数

4、SQL伪列

5、SQL操作符

二、管理游标

1、显式游标一览

2、隐式游标一览

三、用包将游标的声明和游标体分离

四、使用游标FOR循环

1、使用子查询代替显式游标

2、使用游标子查询

3、在游标FOR循环中为表达式定义别名

4、为游标FOR循环传递参数

五、使用游标变量

1、什么是游标变量

2、为什么使用游标变量

3、定义REF CURSOR类型

4、声明游标变量

5、控制游标变量

6、游标变量示例:主从表

7、游标变量示例:客户端PL/SQL块

8、游标变量示例:Pro*C程序

9、游标变量示例:SQL*Plus中操作主变量

10、在向PL/SQL块传递主游标变量时减少网络负荷

11、避免游标变量的错误

12、游标变量的限制

六、使用游标属性

1、显式游标属性一览

2、 隐式游标属性一览

七、使用游标表达式

1、游标表达式的约束

2、游标表达式的示例

八、PL/SQL中的事务处理一览

1、如何用事务保护数据库

2、使用COMMIT提交事务

3、使用ROLLBACK回滚事务

4、使用SAVEPOINT回滚部分事务

5、Oracle如何隐式回滚

6、终止事务

7、使用SET TRANSACTION设置事务属性

8、覆盖默认锁

九、使用自治事务完成单个逻辑工作单元

1、自治事务的优点

2、定义自治事务

3、控制自治事务

4、使用自治触发器

5、从SQL中调用自治函数

十、确保PL/SQL程序的向后兼容

第七章 控制PL/SQL错误

一、错误控制一览

二、异常的优点

三、预定义PL/SQL异常

四、自定义PL/SQL异常

1、声明PL/SQL异常

2、PL/SQL异常的作用域规则

3、把PL/SQL异常与编号关联:编译指示EXCEPTION_INIT

4、自定我们自己的错误消息:过程RAISE_APPLICATION_ERROR

5、重新声明预定义异常

五、如何抛出PL/SQL异常

1、使用RAISE语句抛出异常

六、PL/SQL异常的传递

七、重新抛出PL/SQL异常

八、处理PL/SQL异常

1、声明中控制异常

2、异常句柄中控制异常

3、异常分支

4、获取错误代号与消息:SQLCODE和SQLERRM

5、捕获未控制异常

九、PL/SQL错误控制技巧

1、模拟TRY..CATCH..块

2、反复执行的事务

3、使用定位变量标记异常发生点

第八章 PL/SQL子程序

一、什么是子程序

二、子程序的优点

三、理解PL/SQL过程

四、理解PL/SQL函数

1、使用RETURN语句

2、控制PL/SQL子程序的副影响

五、声明PL/SQL子程序

六、子程序打包

七、形参VS实参

八、位置标示法VS名字标示法

1、使用位置标示法

2、使用名字标示法

3、使用混合标示法

九、指定子程序参数模式

1、使用IN模式

2、使用OUT模式

3、使用IN OUT模式

4、子程序参数模式总结

十、使用NOCOPY编译提示传递大型数据结构

1、权衡NOCOPY所带来的良好性能

2、NOCOPY的限制

十一、使用子程序参数的默认值

十二、理解子程序参数别名

十三、子程序的重载

1、重载的限制

十四、如何解析子程序调用

1、继承中的重载实现

十五、使用表函数接受并返回多行结果

1、表函数一览

2、什么是表函数

3、什么是管道化表函数

4、使用管道化表函数来进行转换

5、编写管道化表函数

6、从表函数返回结果

7、PL/SQL表函数间的数据管道化处理

8、查询Table函数

9、优化对表函数的多次调用

10、使用游标变量传递数据

11、在表函数内执行DML操作

12、在表函数上执行DML操作

13、控制Table函数的异常

十六、表函数并行化处理

1、表函数的并行执行

2、输入数据的分区

3、叶级(Leaf-level)表函数的并行执行

十七、表函数如何"流化"(Stream)传入的数据

1、并行执行中分区与分组的选择

十八、调用者权限VS定义者权限

1、调用者权限的优点

2、用AUTHID子句为子程序指定权限

3、执行当前子程序的用户是谁?

4、如何解析调用者权限子程序里的外部引用

5、覆盖调用者权限子程序中的默认命名解析

6、授权执行调用者权限子程序

7、对调用者权限的子程序使用角色

8、在调用者权限子程序中使用视图和数据库触发器

9、在调用者权限子程序中使用数据库连接

10、在调用者权限子程序中使用对象类型

十九、理解并使用递归

1、什么是递归子程序

2、使用相互递归

3、递归VS迭代

二十、调用外部子程序

二十一、使用PL/SQL Server Page创建动态网页

第九章 PL/SQL包

一、什么是PL/SQL包

1、PL/SQL包举例

二、PL/SQL包的优点

三、理解包说明

1、引用包的内容

四、理解包体

五、包特性的例子

六、包中私有项和公有项

七、重载包级子程序

八、包STANDARD是如何定义PL/SQL环境的

九、系统包一览

1、关于DBMS_ALERT包

2、关于DBMS_OUTPUT包

3、关于DBMS_PIPE包

4、关于UTL_FILE包

5、关于UTL_HTTP包

十、包编写准则

第十章 PL/SQL对象类型

一、抽象的角色

二、什么是对象类型

三、为什么使用对象类型

四、对象类型的结构

五、对象类型组件

1、属性

2、方法

3、更改已存在对象类型的属性和方法

六、定义对象类型

1、PL/SQL类型继承一览

2、对象类型实例:栈

3、对象类型实例:售票处

4、对象类型实例:银行账户

5、对象类型实例:实数

七、声明并初始化对象

1、定义对象

2、初始化对象

3、PL/SQL如何对待未初始化对象

八、访问属性

九、定义构造函数

十、调用构造函数

十一、调用方法

十二、通过REF修饰符共享对象

1、向前类型定义

十三、操作对象

1、查询对象

2、插入对象

3、更新对象

4、删除对象

第十一章 本地动态SQL

一、什么是动态SQL

二、动态SQL的需求

三、使用EXECUTE IMMEDIATE语句

1、动态SQL实例

2、USING子句的向后兼容

3、指定参数模式

四、使用OPEN-FOR、FETCH和CLOSE语句

1、打开游标变量

2、从游标变量取得数据

3、关闭游标变量

4、记录,集合和对象类型的动态SQL举例

五、使用批量动态SQL

1、动态批量绑定语法

2、动态批量绑定实例

六、动态SQL的技巧与陷阱

1、改善性能

2、让过程对任意模式对象起作用

3、使用重复占位符

4、使用游标属性

5、传递空值

6、远程操作

7、使用调用者权限

8、使用RESTRICT_REFERENCES

9、避免死锁

第十二章 PL/SQL应用程序性能调优

一、PL/SQL性能问题的原由

二、确定PL/SQL的性能问题

1、Profiler API:DBMS_PROFILER包

2、Trace API:包DBMS_TRACE

三、PL/SQL性能优化特性

1、使用本地动态SQL优化PL/SQL

2、使用批量绑定优化PL/SQL

3、使用NOCOPY编译器提示优化PL/SQL

4、使用RETURNING子句优化PL/SQL

5、使用外部程序优化PL/SQL

6、使用对象类型和集合优化PL/SQL

7、编译本地执行的PL/SQL代码