书籍详情
Oracle9i PL/SQL从入门到精通
作者:谈竹贤[等]编著
出版社:中国水利水电出版社
出版时间:2002-05-01
ISBN:9787508410555
定价:¥65.00
购买这本书可以去
内容简介
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 什么是PL/SQL
1.2 PL/SQL功能特性
1.2.1 块结构
1.2.2 变量和类型
1.2.3 程序控制结构
1.2.4 游标
1.2.5 过程和函数
1.2.6 包
1.2.7 动态SQL
1.2.8 对象类型
1.2.9 集合
1.2.10 内置包
1.3 Oracle 9i的 PL/SQL新特性
1.4 使用SQL*Plus
1.5 使用SQL*Plus Worksheet
1.6 小结
1.7 练习
第2章 PL/SQL基础
2.1 PL/SQL程序结构
2.1.1 PL/SQL块的类型
2.1.2 PL/SQL块的结构
2.1.3 词法单位
2.2 变量声明
作用域和可见性
2.3 PL/SQL变量类型
2.3.1 数字型
2.3.2 字符型
2.3.3 国际化字符类型
2.3.4 LOB(大型对象)类型
2.3.5 布尔(BOOLEAN)类型
2.3.6 日期和时间间隔(Datetime和Interval)类型
2.3.7 复合类型
2.3.8 引用类型
2.3.9 用户自定义类型
2.4 数据类型转换
2.4.1 显式转换(Explicit Conversion)
2.4.2 隐式转换(Implicit Conversion)
2.4.3 隐式转换和显式转换的比较
2.5 PL/SQL表达式
2.5.1 运算符的优先级
2.5.2 字符表达式
2.5.3 布尔表达式
2.5.4 CASE表达式
2.5.5 在比较和条件语句中处理NULL值
2.6 PL/SQL运算符
2.6.1 算术运算符
2.6.2 逻辑运算符
2.6.3 比较运算符
2.6.4 字符串运算符
2.6.5 用户自定义运算符
2.7 小结
2.8 练习
第3章 表和记录
3.1 表
3.2 记录
3.2.1 记录的定义
3.2.2 记录赋值
3.3 %TYPE和%ROWTYPE
3.3.1 使用%TYPE类型
3.3.2 使用%ROWTYPE类型
3.4 伪列
3.4.1 CURRVAL和NEXTVAL伪列
3.4.2 ROWID伪列
3.4.3 ROWNUM伪列
3.5 小结
3.6 练习
第4章 PL/SQL控制结构
4.1 条件控制
4.1.1 IF-THEN语旬
4.1.2 IF-THEN-ELSE语句
4.1.3 IF-THEN-ELSIF语句
4.1.4 CASE语句
4.1.5 搜索CASE语句
4.1.6 条件语句使用指导
4.2 循环结构
4.2.1 LOOP循环
4.2.2 WHILE-LOOP循环
4.2.3 FOR循环
4.2.4 循环语句使用指导
4.3 顺序结构
4.3.1 GOTO语句
4.3.2 NULL语句
4.4 小结
4.5 练习
第5章 SQL基本命令
5.1 SQL基本命令分类
5.2 数据定义语言(DDL)
5.3 数据操纵语言(DML)
5.3.1 INSERT语句
5.3.2 SELECT语句
5.3.3 UPDATE语句
5.3.4 DELETE语句
5.3.5 LOCK TABLE命令
5.4 事务控制命令
5.4.1 SET TRANSACTION
5.4.2 COMMIT与ROLLBACK
5.4.3 SAVE POINT
5.5 会话控制命令
5.5.1 ALTER SESSION命令
5.5.2 SET ROLE命令
5.6 系统控制命令
5.7 小结
5.8 练习
第6章 Oracle内置SQL函数
6.1 错误报告(Error Reporing)函数
6.2 数值(Number)函数
6.2.1 BITAND
6.2.2 CEIL
6.2.3 FLOOR
6.2.4 SIGN
6.2.5 ROUND
6.2.6 TRUNC
6.3 字符(Character)函数
6.3.1 CONCAT
6.3.2 INSTR
6.3.3 LPAD
6.3.4 LTRIM
6.3.5 NLS_INITCAP
6.3.6 NLS_LOWER
6.3.7 NLS_UPPER
6.3.8 NLSSORT
6.3.9 REPLACE
6.3.10 SOUNDEX
6.3.11 SUBSTR
6.3.12 TRANSLATE
6.3.13 TRIM
6.4 转换(Conversion)函数
6.4.1 CONVERT
6.4.2 TO_CHAR
6.4.3 TO_CLOB
6.4.4 TO_DATE
6.4.STO_MULTI_BYTE
6.4.6 TO_SINGLE_BYTE
6.4.7 TO_ NUMBER
6.5 日期(Date)函数
6.5.1 SYSDATE函数
6.5.2 ADD_MONTHS函数
6.5.3 CURRENT_DATE函数
6.5.4 CURRENT_TIMESTAMP函数
6.5.5 DBTIMEZONE函数
6.5.6 EXTRACT函数
6.5.7 FROM_TZ函数
6.5.8 LOCALTIMESTAMP函数
6.5.9 MONTHS_BETWEEN函数
6.5.10 NEW_TIME函数
6.5.11 NEXT_DAY函数
6.5.12 NUMTODSINTERVAL函数
6.5.13 NUMTOYMINTERVAL函数
6.5.14 ROUND函数
6.5.15 SESSIONTIMEZONE函数
6.5.16 SYSTIMESTAMP函数
6.5.17 TO_DSINTERVAL函数
6.5.18 TO_TIMESTAMP函数
6.5.19 TO_TIMESTAMP_TZ函数
6.5.20 TO_YMINTERVAL函数
6.5.21 TZ_OFFSET函数
6.5.22 TRUNC函数
6.6 分组(Group)函数
6.6.1 STDDEV函数
6.6.2 VARIANCE函数
6.7 杂项(Misc)函数
6.7.1 DECODE函数
6.7.2 DUMP函数
6.7.3 GREATEST函数
6.7.4 LEAST函数
6.7.5 NVL函数
6.8 小结
6.9 练习
第7章 过程与函数
7.1 使用过程
7.1.1 创建过程
7.1.2 调用过程
7.1.3 重新编译过程
7.1.4 删除过程
7.2 使用函数
7.2.1 函数的定义
7.2.2 RETURN语句
7.2.3 调用函数
7.2.4 删除函数
7.3 子程序
7.3.1 内置子程序
7.3.2 本地子程序
7.4 递归
7.5 小结
7.6 练习
第8章 包
8.1 包的概念
8.2 包的规范与创建
8.2.1 使用包的优势
8.2.2 理解包规范
8.2.3 理解包体
8.3 包的调用
8.4 包的重新编译和重载
8.4.1 包的重新编译
8.4.2 包的重载
8.5 小结
8.6 练习
第9章 异常处理
9.1 什么是异常
9.2 PL/SQL预定义异常
9.3 PL/SQL的异常处理结构
9.3.1 异常的触发
9.3.2 异常的传播
9.4 自定义异常
9.4.1 声明异常
9.4.2 使用编译指令EXCEPTION_INIT
9.4.3 使用RAISE_APPLICATION_ERROR
9.4.4 使用错误函数SQLCODE和SQLERRM
9.5 小结
9.6 练习
第10章 游标
10.1 什么是游标
10.2 显式游标
10.2.1 声明游标
10.2.2 打开游标(OPEN CURSOR)
10.2.3 提取游标(FETCH CURSOR)
10.2.4 关闭游标(CLOSE CURSOR)
10.2.5 显式游标的属性
10.2.6 在游标中使用子查询
10.2.7 在包中使用游标
10.3 隐式游标
10.4 游标提取循环
10.4.1 基本循环(LOOP…END LOOP)
10.4.2 WHILE循环
10.4.3 FOR循环(CURSOR FOR LOOP)
10.4.4 SELECT FOR UPDATE游标
10.5 游标变量
10.5.1 声明游标变量
10.5.2 控制游标变量
10.5.3 使用游标变量的限制
10.6 小结
10.7 练习
第11章 触发器
11.1 触发器
11.2 DML触发器
11.2.1 创建DML触发器
11.2.2 访问行触发器中的列值
11.2.3 条件谓词
11.3 使用DML触发器
11.3.1 维护数据完整性
11.3.2 维护修改的历史日志
11.4 系统触发器
11.4.1 创建系统触发器
11.4.2 事件属性
11.4.3 系统触发器的例子
11.5 替代触发器
11.5.1 替代触发器的创建
11.5.2 替代触发器的编写
11.5.3 视图所包括的嵌套表上的列的触发器
11.6 触发器的例外
11.6.1 在触发器体的错误条件和例外
11.6.2 触发器和处理远程的例外
11.7 小结
11.8 练习
第12章 事务管理和锁定
12.1 事务管理
12.1.1 COMMIT(提交)
12.1.2 ROLLBACK(回滚)
12.1.3 SAVEPOINT(保存点)
12.1.4 SET TRANSACTION
12.1.5 分布式事务的管理
12.1.6 RELEASE
12.2 锁定
12.2.1 表锁定
12.2.2 锁定记录
12.2.3 显式的锁定
12.2.4 其他的锁定
12.2.5 DBMS_LOCK包
12.3 小结
12.4 练习
第13章 集合
13.1 集合概述
13.2 索引表
13.2.1 定义索引表
13.2.2 向索引表中插入数据
13.2.3 引用索引表的值
13.3 嵌套表
13.3.1 声明嵌套表
13.3.2 嵌套表的初始化和赋值
13.3.3 数据库中的嵌套表
13.4 变长数组
13.4.1 定义变长数组
13.4.2 初始化变长数组
13.4.3 数据库中的数组
13.5 使用集合方法
13.5.1 EXISTS方法
13.5.2 COUNT方法
13.5.3 LIMIT方法
13.5.4 FIRST和LAST方法
13.5.5 PRIOR和NEXT方法
13.5.6 EXTED方法
13.5.7 DELETE和TRIM方法
13.5.8 把方法用于集合参数
13.6 集合的异常处理
13.7 批联编
13.7.1 使用FORALL语句
13.7.2 使用BULK COLLECT
13.8 小结
13.9 练习
第14章 PL/SQL对象类型
14.1 面向对象的基本概念
14.1.1 对象(Object)
14.1.2 类(Class)
14.1.3 继承(Inheritance)
14.1.4 多态性
14.2 对象类型
14.2.1 为什么使用对象
14.2.2 对象类型的结构
14.2.3 对象类型的组成
14.3 定义对象类型
14.3.1 对象类型的定义
14.3.2 SELF参数
14.3.3 PL/SQL的继承
14.3.4 更改和删除对象类型
14.4 声明并初始化对象
14.4.1 声明对象
14.4.2 构造函数与初始化对象
14.5 对象的使用
14.5.1 存取属性
14.5.2 调用构造函数
14.5.3 调用方法
14.6 按列存储对象
14.7 对象表
14.7.1 创建对象表
14.7.2 向对象表中添加对象
14.7.3 检索对象表中的对象
14.7.4 更新对象表
14.7.5 删除对象表的对象
14.8 共享对象
14.8.1 引用
14.8.2 REF和DEREF函数
14.8.3 前期类型定义
14.9 比较对象
14.9.1 MAP方法
14.9.2 ORDER方法
14.9.3 指导要点
14.10 小结
14.11 练习
第15章 跟踪和调试
15.1 调试语法错误
15.2 调试逻辑错误
15.2.1 逻辑错误例子
15.2.2 逻辑错误解决
15.3 使用工具调试程序
15.3.1 在程序中插入调试用表
15.3.2 DBMS_OUTPUT包
15.4 程序的规划与代码编写
15.4.1 程序结构的规划
15.4.2 编制代码
15.4.3 格式化代码
15.5 小结
15.6 练习
第16章 本机动态SQL
16.1 什么是动态SQL
16.2 动态SQL的两种方法
16.3 使用EXECUTE IMMEDIATE语句
16.3.1 执行DDL
16.3.2 执行PL/SQL块
16.3.3 绑定变量
16.4 使用OPEN-FOR、FETCH和CLOSE语句
16.5 使用批动态SQL
16.5.1 批EXECUTE IMMEDIATE
16.5.2 批FETCH
16.5.3 批FORALL
16.6 动态SQL的技巧
16.6.1 改进性能
16.6.2 使用重复的占位符
16.6.3 使用游标属性
16.6.4 传递Null参数
16.6.5 远程操作
16.6.6 使用调用者特权
16.6.7 避免死锁
16.7 小结
16.8 练习
第17章 输入与输出
17.1 DBMS_OUTPUT包
17.1.1 使用DBMS_OUTPUT包
17.1.2 启用DBMS_OUTPUT包
17.1.3 关闭DBMS_OUTPUT包
17.1.4 将数据写到缓冲区
17.1.5 从缓冲区中读取数据
17.1.6 应用举例
17.2 UTL_FILE包
17.2.1 安全性
17.2.2 使用UTL_FILE包函数与文件I/O步骤
17.2.3 UTL_FILE引发的异常
17.2.4 文件的打开与关闭
17.2.5 文件输出
17.2.6 文件输入
17.3 小结
17.4 练习
第18章 会话间通信
18.1 DBMS_SESSION
18.1.1 SET_IDENTIFIER
18.1.2 SET_CONTEXT
18.1.3 CLEAR_CONTEXT
18.1.4 CLEAR_IDENTIFIER
18.1.5 SET_ROLE
18.1.6 SET_SQL_TRACE
18.1.7 SET_NLS
18.1.8 CLOSE_DATABASE_LINK
18.1.9 RESET_PACKAGE
18.1.10 UNIQUE_SESSION_ID函数
18.1.11 IS_ROLE_ENABLED函数
18.1.12 IS_SESSION_ALIVE函数
18.1.13 SET_CLOSE_CACHED_OPEN_CURSORS
18.1.14 FREE_UNUSED_USER_MEMORY
18.1.15 LIST_CONTEXT
18.1.16 SWITCH_CURRENT_CONSUMER_GROUP
18.2 DBMS_ALERT
18.2.1 包DBMS_ALERT中常量的定义
18.2.2 常见错误
18.2.3 报警使用机制
18.2.4 检查报警
18.2.5 DBMS_ALERT子程序的概述
18.3 DBMS_PIPE
18.3.1 公有管道和私有管道
18.3.2 DBMS_PIPE子程序的概述
18.4 小结
18.5 练习
第19章 高级队列
19.1 高级队列简介
19.1.1 异步消息通知
19.1.2 监听功能
19.1.3 传播特征
19.1.4 队列监视
19.2 队列使用
19.2.1 为负载定义一个类型
19.2.2 CREATE_QUEUE_TABLE
19.2.3 ALTER_QUEUE_TABLE
19.2.4 DROP_QUEUE_TABLE
19.2.5 CREATE_QUEUE
19.2.6 CREATE_NP_QUEUE
19.2.7 ALTER_QUEUE
19.2.8 DROP_QUEUE
19.2.9 START_QUEUE
19.2.10 STOP_QUEUE
19.2.11 ENQUEUE
19.2.12 DEQUEUE
19.2.13 Message Properties
19.2.14 记录ENQUEUE_OPTIONS_T
19.2.15 AQ$_AGENT对象类型
19.2.16 AQ$_RECIPIENT_LIST_T对象类型
19.2.17 Dequeue Options Type
19.3 其他AQ过程
19.3.1 GRANT_SYSTEM_PRIVILEGE
19.3.2 REVOKE_SYSTEM_PRIVILEGE
19.3.3 GRANT_QUEUE_PRIVILEGE
19.3.4 REVOKE_QUEUE_PRIVILEGE
19.4 AQ中级知识
19.4.1 订阅者列表和接收者列表
19.4.2 订阅者列表
19.4.3 接收者列表
19.4.4 AQ执行发布/订阅
19.4.5 AQ Recipient List Type(接收者列表数据类型)
19.4.6 AQ Agent List Type(代理列表类型)
19.4.7 AQ Subscriber List Type(订阅者列表类型)
19.4.8 AQ Registration Info Type(AQ注册信息类型)
19.4.9 AQ Registration Info List Type
19.4.10 LISTEN过程
19.4.11 REGISTER过程
19.4.12 UNREGISTER过程
19.4.13 ADD_SUBSCRIBER过程
19.4.14 ALTER_SUBSCRIBER过程
19.4.15 REMOVE_SUBSCRIBER过程
19.4.16 SCHEDULE_PROPAGATION过程
19.4.17 UNSCHEDULE_PROPAGATION过程
19.4.18 VERIFY_QUEUE_TYPES过程
19.4.19 ALTER_PROPAGATION_SCHEDULE过程
19.4.20 ENABLE_PROPAGATION_SCHEDULE过程
19.4.21 DISABLE_PROPAGATION_SCHEDULE过程
19.5 AQ实例
19.5.1 创建队列表和队列
19.5.2 消息入队出队
19.5.3 消息传播
19.5.4 删除AQ对象
19.6 小结
19.7 练习
第20章 数据库作业管理
20.1 如何运行作业
20.2 管理作业队列
20.2.1 DBMS_JOB包
20.2.2 作业环境(Job Environment)
20.2.3 作业的导入导出(Import/Export)
20.3 小结
20.4 练习
第21章 大型对象
21.1 大型对象类型概述
21.1.1 什么是大型对象
21.1.2 大型对象数据类型
21.1.3 可变宽度(Varying-Width)字符数据
21.1.4 大型对象值和定位器
21.1.5 创建包含大型对象的表
21.2 Oracle 9i中大型对象的新特征
21.3 用PL/SQL的DBMS_上OB包
21.3.1 DBMS_LOB包函数/过程介绍
21.3.2 DBMS_LOB包的大型对象定位器
21.3.3 DBMS_LOB包的数据类型常数及异常
21.3.4 DBMS_LOB包的规则和限制
21.4 使用外部大型对象BFILE
21.4.1 创建目录对象
21.4.2 打开BFILE
21.4.3 函数FILEISOPEN
21.4.4 函数FILEEXISTS
21.4.5 关闭文件的过程
21.4.6 获得文件信息
21.4.7 读文件操作
21.4.8 比较两个文件内容
21.4.9 INSTR函数
21.4.10 SUBSTR函数
21.5 使用外部大型对象BFILE的范例
21.6 使用内部大型对象
21.6.1 APPEND过程
21.6.2 COMPARE函数
21.6.3 COPY过程
21.6.4 EMPTY_BLOB和EMPTY_CLOB函数
21.6.5 ERASE过程
21.6.6 GETLENGTH函数
21.6.7 INSTR函数
21.6.8 READ过程
21.6.9 SUBSTR函数
21.6.10 TRIM过程
21.6 11 WRITE过程
21.6.12 WRITEAPPEND过程
21.7 使用内部大型对象的范例
21.7.1 向内部LOB拷贝数据
21.7.2 向内部LOB中添加数据
21.7.3 分析内部LOB内容
21.7.4 编辑内部LOB对象
21.8 临时大型对象
21.8.1 临时大型对象概述
21.8.2 临时大型对象的使用
21.9 LONG与LOB数据类型
21.9.1 LONG与LOB数据类型的比较
21.9.2 LONG与LOB数据类型的转换
21.10 小结
21.11 练习
第22章 开发Web应用程序
22.1 PL/SQL Web应用程序概念
22.1.1 使用PL/SQL存储过程和函数
22.1.2 PL/SQL Server Pages
22.1.3 为XML启用PL/SQL Web应用程序
22.2 设置和检验PL/SQL服务器页
22.2.1 安装Oracle HTTP Server
22.2.2 创建一个PSP文件
22.2.3 将PSP文件导入到数据库
22.2.4 设置Oracle HTTP Server
22.2.5 从浏览器中调用PSP
22.3 PL/SQL Web应用程序的参数传递
22.3.1 从HTML表单中传递列表框或微调框参数
22.3.2 从HTML表单中传递单选按钮或复选框参数
22.3.3 从HTML表单传递输入域参数
22.3.4 从HTML表单中传递隐藏参数的值
22.3.5 提交一张完整的HTML表单
22.3.6 从HTML表单中处理丢失的输入
22.3.7 在网页之间维护状态信息
22.4 在PL/SQL存储过程中执行网络操作
22.4.1 从PL/SQL中发送邮件
22.4.2 从PL/SQL中得到一个主机名或地址
22.4.3 在PL/SQL中操作TCP/IP连接
22.4.4 从PL/SQL中检索一个HTTP URL的内容
22.4.5 操作表格、图像、Cookies和CGI变量
22.5 PL/SQL Server Pages
22.5.1 选择一个软件配置
22.5.2 为PL/SQL服务器页编写代码和内容
22.5.3 把PL/SQL服务器页装载到数据库存储过程
22.6 PL/SQL Server Pages实例
22.6.1 一次性显示表的内容
22.6.2 使用循环打印表的内容
22.6.3 用户选择
22.6.4 调用PL/SQL服务器页的HTML表单
22.6.5 在PSP文件中包含JavaScript
22.6.6 调试PL/SQL Server Pages
22.6.7 将PSP应用程序加入产品
22.7 小结
22.8 练习
第23章 调整PL/SQL应用程序
23.1 PL/SQL性能问题的原因
23.2 识别PL/SQL性能问题
23.2.1 剖析API:DBMS_PROFILER包
23.2.2 跟踪API:DBMS_TRACE包
23.3 性能调整的PL/SQL特征
23.3.1 通过本机动态SQL改进PL/SQL性能
23.3.2 通过批联编提高PL/SQL性能
23.3.3 使用NOCOPY编译器提示来提高PL/SQL性能
23.3.4 使用RETURNING子句提高PL/SQL性能
23.3.5 使用外部程序提高PL/SQL性能
23.3.6 使用对象类型和集合来提高PL/SQL性能
23.3.7 编译PL/SQL代码以便于本地执行
23.4 小结
附录一 PL/SQL保留字
附录二 部分练习答案
附录三 部分表结构
附录四 SQL*Plus的使用
F4.1 启动SQL*Plus
F4.2 输入和执行命令
F4.3 编辑SQL命令
F4.4 创建和修改命令文件
F4.5 环境变量的设置和保存
F4.6 编写交互命令
F4.7 格式化查询结果
第1章 PL/SQL简介
1.1 什么是PL/SQL
1.2 PL/SQL功能特性
1.2.1 块结构
1.2.2 变量和类型
1.2.3 程序控制结构
1.2.4 游标
1.2.5 过程和函数
1.2.6 包
1.2.7 动态SQL
1.2.8 对象类型
1.2.9 集合
1.2.10 内置包
1.3 Oracle 9i的 PL/SQL新特性
1.4 使用SQL*Plus
1.5 使用SQL*Plus Worksheet
1.6 小结
1.7 练习
第2章 PL/SQL基础
2.1 PL/SQL程序结构
2.1.1 PL/SQL块的类型
2.1.2 PL/SQL块的结构
2.1.3 词法单位
2.2 变量声明
作用域和可见性
2.3 PL/SQL变量类型
2.3.1 数字型
2.3.2 字符型
2.3.3 国际化字符类型
2.3.4 LOB(大型对象)类型
2.3.5 布尔(BOOLEAN)类型
2.3.6 日期和时间间隔(Datetime和Interval)类型
2.3.7 复合类型
2.3.8 引用类型
2.3.9 用户自定义类型
2.4 数据类型转换
2.4.1 显式转换(Explicit Conversion)
2.4.2 隐式转换(Implicit Conversion)
2.4.3 隐式转换和显式转换的比较
2.5 PL/SQL表达式
2.5.1 运算符的优先级
2.5.2 字符表达式
2.5.3 布尔表达式
2.5.4 CASE表达式
2.5.5 在比较和条件语句中处理NULL值
2.6 PL/SQL运算符
2.6.1 算术运算符
2.6.2 逻辑运算符
2.6.3 比较运算符
2.6.4 字符串运算符
2.6.5 用户自定义运算符
2.7 小结
2.8 练习
第3章 表和记录
3.1 表
3.2 记录
3.2.1 记录的定义
3.2.2 记录赋值
3.3 %TYPE和%ROWTYPE
3.3.1 使用%TYPE类型
3.3.2 使用%ROWTYPE类型
3.4 伪列
3.4.1 CURRVAL和NEXTVAL伪列
3.4.2 ROWID伪列
3.4.3 ROWNUM伪列
3.5 小结
3.6 练习
第4章 PL/SQL控制结构
4.1 条件控制
4.1.1 IF-THEN语旬
4.1.2 IF-THEN-ELSE语句
4.1.3 IF-THEN-ELSIF语句
4.1.4 CASE语句
4.1.5 搜索CASE语句
4.1.6 条件语句使用指导
4.2 循环结构
4.2.1 LOOP循环
4.2.2 WHILE-LOOP循环
4.2.3 FOR循环
4.2.4 循环语句使用指导
4.3 顺序结构
4.3.1 GOTO语句
4.3.2 NULL语句
4.4 小结
4.5 练习
第5章 SQL基本命令
5.1 SQL基本命令分类
5.2 数据定义语言(DDL)
5.3 数据操纵语言(DML)
5.3.1 INSERT语句
5.3.2 SELECT语句
5.3.3 UPDATE语句
5.3.4 DELETE语句
5.3.5 LOCK TABLE命令
5.4 事务控制命令
5.4.1 SET TRANSACTION
5.4.2 COMMIT与ROLLBACK
5.4.3 SAVE POINT
5.5 会话控制命令
5.5.1 ALTER SESSION命令
5.5.2 SET ROLE命令
5.6 系统控制命令
5.7 小结
5.8 练习
第6章 Oracle内置SQL函数
6.1 错误报告(Error Reporing)函数
6.2 数值(Number)函数
6.2.1 BITAND
6.2.2 CEIL
6.2.3 FLOOR
6.2.4 SIGN
6.2.5 ROUND
6.2.6 TRUNC
6.3 字符(Character)函数
6.3.1 CONCAT
6.3.2 INSTR
6.3.3 LPAD
6.3.4 LTRIM
6.3.5 NLS_INITCAP
6.3.6 NLS_LOWER
6.3.7 NLS_UPPER
6.3.8 NLSSORT
6.3.9 REPLACE
6.3.10 SOUNDEX
6.3.11 SUBSTR
6.3.12 TRANSLATE
6.3.13 TRIM
6.4 转换(Conversion)函数
6.4.1 CONVERT
6.4.2 TO_CHAR
6.4.3 TO_CLOB
6.4.4 TO_DATE
6.4.STO_MULTI_BYTE
6.4.6 TO_SINGLE_BYTE
6.4.7 TO_ NUMBER
6.5 日期(Date)函数
6.5.1 SYSDATE函数
6.5.2 ADD_MONTHS函数
6.5.3 CURRENT_DATE函数
6.5.4 CURRENT_TIMESTAMP函数
6.5.5 DBTIMEZONE函数
6.5.6 EXTRACT函数
6.5.7 FROM_TZ函数
6.5.8 LOCALTIMESTAMP函数
6.5.9 MONTHS_BETWEEN函数
6.5.10 NEW_TIME函数
6.5.11 NEXT_DAY函数
6.5.12 NUMTODSINTERVAL函数
6.5.13 NUMTOYMINTERVAL函数
6.5.14 ROUND函数
6.5.15 SESSIONTIMEZONE函数
6.5.16 SYSTIMESTAMP函数
6.5.17 TO_DSINTERVAL函数
6.5.18 TO_TIMESTAMP函数
6.5.19 TO_TIMESTAMP_TZ函数
6.5.20 TO_YMINTERVAL函数
6.5.21 TZ_OFFSET函数
6.5.22 TRUNC函数
6.6 分组(Group)函数
6.6.1 STDDEV函数
6.6.2 VARIANCE函数
6.7 杂项(Misc)函数
6.7.1 DECODE函数
6.7.2 DUMP函数
6.7.3 GREATEST函数
6.7.4 LEAST函数
6.7.5 NVL函数
6.8 小结
6.9 练习
第7章 过程与函数
7.1 使用过程
7.1.1 创建过程
7.1.2 调用过程
7.1.3 重新编译过程
7.1.4 删除过程
7.2 使用函数
7.2.1 函数的定义
7.2.2 RETURN语句
7.2.3 调用函数
7.2.4 删除函数
7.3 子程序
7.3.1 内置子程序
7.3.2 本地子程序
7.4 递归
7.5 小结
7.6 练习
第8章 包
8.1 包的概念
8.2 包的规范与创建
8.2.1 使用包的优势
8.2.2 理解包规范
8.2.3 理解包体
8.3 包的调用
8.4 包的重新编译和重载
8.4.1 包的重新编译
8.4.2 包的重载
8.5 小结
8.6 练习
第9章 异常处理
9.1 什么是异常
9.2 PL/SQL预定义异常
9.3 PL/SQL的异常处理结构
9.3.1 异常的触发
9.3.2 异常的传播
9.4 自定义异常
9.4.1 声明异常
9.4.2 使用编译指令EXCEPTION_INIT
9.4.3 使用RAISE_APPLICATION_ERROR
9.4.4 使用错误函数SQLCODE和SQLERRM
9.5 小结
9.6 练习
第10章 游标
10.1 什么是游标
10.2 显式游标
10.2.1 声明游标
10.2.2 打开游标(OPEN CURSOR)
10.2.3 提取游标(FETCH CURSOR)
10.2.4 关闭游标(CLOSE CURSOR)
10.2.5 显式游标的属性
10.2.6 在游标中使用子查询
10.2.7 在包中使用游标
10.3 隐式游标
10.4 游标提取循环
10.4.1 基本循环(LOOP…END LOOP)
10.4.2 WHILE循环
10.4.3 FOR循环(CURSOR FOR LOOP)
10.4.4 SELECT FOR UPDATE游标
10.5 游标变量
10.5.1 声明游标变量
10.5.2 控制游标变量
10.5.3 使用游标变量的限制
10.6 小结
10.7 练习
第11章 触发器
11.1 触发器
11.2 DML触发器
11.2.1 创建DML触发器
11.2.2 访问行触发器中的列值
11.2.3 条件谓词
11.3 使用DML触发器
11.3.1 维护数据完整性
11.3.2 维护修改的历史日志
11.4 系统触发器
11.4.1 创建系统触发器
11.4.2 事件属性
11.4.3 系统触发器的例子
11.5 替代触发器
11.5.1 替代触发器的创建
11.5.2 替代触发器的编写
11.5.3 视图所包括的嵌套表上的列的触发器
11.6 触发器的例外
11.6.1 在触发器体的错误条件和例外
11.6.2 触发器和处理远程的例外
11.7 小结
11.8 练习
第12章 事务管理和锁定
12.1 事务管理
12.1.1 COMMIT(提交)
12.1.2 ROLLBACK(回滚)
12.1.3 SAVEPOINT(保存点)
12.1.4 SET TRANSACTION
12.1.5 分布式事务的管理
12.1.6 RELEASE
12.2 锁定
12.2.1 表锁定
12.2.2 锁定记录
12.2.3 显式的锁定
12.2.4 其他的锁定
12.2.5 DBMS_LOCK包
12.3 小结
12.4 练习
第13章 集合
13.1 集合概述
13.2 索引表
13.2.1 定义索引表
13.2.2 向索引表中插入数据
13.2.3 引用索引表的值
13.3 嵌套表
13.3.1 声明嵌套表
13.3.2 嵌套表的初始化和赋值
13.3.3 数据库中的嵌套表
13.4 变长数组
13.4.1 定义变长数组
13.4.2 初始化变长数组
13.4.3 数据库中的数组
13.5 使用集合方法
13.5.1 EXISTS方法
13.5.2 COUNT方法
13.5.3 LIMIT方法
13.5.4 FIRST和LAST方法
13.5.5 PRIOR和NEXT方法
13.5.6 EXTED方法
13.5.7 DELETE和TRIM方法
13.5.8 把方法用于集合参数
13.6 集合的异常处理
13.7 批联编
13.7.1 使用FORALL语句
13.7.2 使用BULK COLLECT
13.8 小结
13.9 练习
第14章 PL/SQL对象类型
14.1 面向对象的基本概念
14.1.1 对象(Object)
14.1.2 类(Class)
14.1.3 继承(Inheritance)
14.1.4 多态性
14.2 对象类型
14.2.1 为什么使用对象
14.2.2 对象类型的结构
14.2.3 对象类型的组成
14.3 定义对象类型
14.3.1 对象类型的定义
14.3.2 SELF参数
14.3.3 PL/SQL的继承
14.3.4 更改和删除对象类型
14.4 声明并初始化对象
14.4.1 声明对象
14.4.2 构造函数与初始化对象
14.5 对象的使用
14.5.1 存取属性
14.5.2 调用构造函数
14.5.3 调用方法
14.6 按列存储对象
14.7 对象表
14.7.1 创建对象表
14.7.2 向对象表中添加对象
14.7.3 检索对象表中的对象
14.7.4 更新对象表
14.7.5 删除对象表的对象
14.8 共享对象
14.8.1 引用
14.8.2 REF和DEREF函数
14.8.3 前期类型定义
14.9 比较对象
14.9.1 MAP方法
14.9.2 ORDER方法
14.9.3 指导要点
14.10 小结
14.11 练习
第15章 跟踪和调试
15.1 调试语法错误
15.2 调试逻辑错误
15.2.1 逻辑错误例子
15.2.2 逻辑错误解决
15.3 使用工具调试程序
15.3.1 在程序中插入调试用表
15.3.2 DBMS_OUTPUT包
15.4 程序的规划与代码编写
15.4.1 程序结构的规划
15.4.2 编制代码
15.4.3 格式化代码
15.5 小结
15.6 练习
第16章 本机动态SQL
16.1 什么是动态SQL
16.2 动态SQL的两种方法
16.3 使用EXECUTE IMMEDIATE语句
16.3.1 执行DDL
16.3.2 执行PL/SQL块
16.3.3 绑定变量
16.4 使用OPEN-FOR、FETCH和CLOSE语句
16.5 使用批动态SQL
16.5.1 批EXECUTE IMMEDIATE
16.5.2 批FETCH
16.5.3 批FORALL
16.6 动态SQL的技巧
16.6.1 改进性能
16.6.2 使用重复的占位符
16.6.3 使用游标属性
16.6.4 传递Null参数
16.6.5 远程操作
16.6.6 使用调用者特权
16.6.7 避免死锁
16.7 小结
16.8 练习
第17章 输入与输出
17.1 DBMS_OUTPUT包
17.1.1 使用DBMS_OUTPUT包
17.1.2 启用DBMS_OUTPUT包
17.1.3 关闭DBMS_OUTPUT包
17.1.4 将数据写到缓冲区
17.1.5 从缓冲区中读取数据
17.1.6 应用举例
17.2 UTL_FILE包
17.2.1 安全性
17.2.2 使用UTL_FILE包函数与文件I/O步骤
17.2.3 UTL_FILE引发的异常
17.2.4 文件的打开与关闭
17.2.5 文件输出
17.2.6 文件输入
17.3 小结
17.4 练习
第18章 会话间通信
18.1 DBMS_SESSION
18.1.1 SET_IDENTIFIER
18.1.2 SET_CONTEXT
18.1.3 CLEAR_CONTEXT
18.1.4 CLEAR_IDENTIFIER
18.1.5 SET_ROLE
18.1.6 SET_SQL_TRACE
18.1.7 SET_NLS
18.1.8 CLOSE_DATABASE_LINK
18.1.9 RESET_PACKAGE
18.1.10 UNIQUE_SESSION_ID函数
18.1.11 IS_ROLE_ENABLED函数
18.1.12 IS_SESSION_ALIVE函数
18.1.13 SET_CLOSE_CACHED_OPEN_CURSORS
18.1.14 FREE_UNUSED_USER_MEMORY
18.1.15 LIST_CONTEXT
18.1.16 SWITCH_CURRENT_CONSUMER_GROUP
18.2 DBMS_ALERT
18.2.1 包DBMS_ALERT中常量的定义
18.2.2 常见错误
18.2.3 报警使用机制
18.2.4 检查报警
18.2.5 DBMS_ALERT子程序的概述
18.3 DBMS_PIPE
18.3.1 公有管道和私有管道
18.3.2 DBMS_PIPE子程序的概述
18.4 小结
18.5 练习
第19章 高级队列
19.1 高级队列简介
19.1.1 异步消息通知
19.1.2 监听功能
19.1.3 传播特征
19.1.4 队列监视
19.2 队列使用
19.2.1 为负载定义一个类型
19.2.2 CREATE_QUEUE_TABLE
19.2.3 ALTER_QUEUE_TABLE
19.2.4 DROP_QUEUE_TABLE
19.2.5 CREATE_QUEUE
19.2.6 CREATE_NP_QUEUE
19.2.7 ALTER_QUEUE
19.2.8 DROP_QUEUE
19.2.9 START_QUEUE
19.2.10 STOP_QUEUE
19.2.11 ENQUEUE
19.2.12 DEQUEUE
19.2.13 Message Properties
19.2.14 记录ENQUEUE_OPTIONS_T
19.2.15 AQ$_AGENT对象类型
19.2.16 AQ$_RECIPIENT_LIST_T对象类型
19.2.17 Dequeue Options Type
19.3 其他AQ过程
19.3.1 GRANT_SYSTEM_PRIVILEGE
19.3.2 REVOKE_SYSTEM_PRIVILEGE
19.3.3 GRANT_QUEUE_PRIVILEGE
19.3.4 REVOKE_QUEUE_PRIVILEGE
19.4 AQ中级知识
19.4.1 订阅者列表和接收者列表
19.4.2 订阅者列表
19.4.3 接收者列表
19.4.4 AQ执行发布/订阅
19.4.5 AQ Recipient List Type(接收者列表数据类型)
19.4.6 AQ Agent List Type(代理列表类型)
19.4.7 AQ Subscriber List Type(订阅者列表类型)
19.4.8 AQ Registration Info Type(AQ注册信息类型)
19.4.9 AQ Registration Info List Type
19.4.10 LISTEN过程
19.4.11 REGISTER过程
19.4.12 UNREGISTER过程
19.4.13 ADD_SUBSCRIBER过程
19.4.14 ALTER_SUBSCRIBER过程
19.4.15 REMOVE_SUBSCRIBER过程
19.4.16 SCHEDULE_PROPAGATION过程
19.4.17 UNSCHEDULE_PROPAGATION过程
19.4.18 VERIFY_QUEUE_TYPES过程
19.4.19 ALTER_PROPAGATION_SCHEDULE过程
19.4.20 ENABLE_PROPAGATION_SCHEDULE过程
19.4.21 DISABLE_PROPAGATION_SCHEDULE过程
19.5 AQ实例
19.5.1 创建队列表和队列
19.5.2 消息入队出队
19.5.3 消息传播
19.5.4 删除AQ对象
19.6 小结
19.7 练习
第20章 数据库作业管理
20.1 如何运行作业
20.2 管理作业队列
20.2.1 DBMS_JOB包
20.2.2 作业环境(Job Environment)
20.2.3 作业的导入导出(Import/Export)
20.3 小结
20.4 练习
第21章 大型对象
21.1 大型对象类型概述
21.1.1 什么是大型对象
21.1.2 大型对象数据类型
21.1.3 可变宽度(Varying-Width)字符数据
21.1.4 大型对象值和定位器
21.1.5 创建包含大型对象的表
21.2 Oracle 9i中大型对象的新特征
21.3 用PL/SQL的DBMS_上OB包
21.3.1 DBMS_LOB包函数/过程介绍
21.3.2 DBMS_LOB包的大型对象定位器
21.3.3 DBMS_LOB包的数据类型常数及异常
21.3.4 DBMS_LOB包的规则和限制
21.4 使用外部大型对象BFILE
21.4.1 创建目录对象
21.4.2 打开BFILE
21.4.3 函数FILEISOPEN
21.4.4 函数FILEEXISTS
21.4.5 关闭文件的过程
21.4.6 获得文件信息
21.4.7 读文件操作
21.4.8 比较两个文件内容
21.4.9 INSTR函数
21.4.10 SUBSTR函数
21.5 使用外部大型对象BFILE的范例
21.6 使用内部大型对象
21.6.1 APPEND过程
21.6.2 COMPARE函数
21.6.3 COPY过程
21.6.4 EMPTY_BLOB和EMPTY_CLOB函数
21.6.5 ERASE过程
21.6.6 GETLENGTH函数
21.6.7 INSTR函数
21.6.8 READ过程
21.6.9 SUBSTR函数
21.6.10 TRIM过程
21.6 11 WRITE过程
21.6.12 WRITEAPPEND过程
21.7 使用内部大型对象的范例
21.7.1 向内部LOB拷贝数据
21.7.2 向内部LOB中添加数据
21.7.3 分析内部LOB内容
21.7.4 编辑内部LOB对象
21.8 临时大型对象
21.8.1 临时大型对象概述
21.8.2 临时大型对象的使用
21.9 LONG与LOB数据类型
21.9.1 LONG与LOB数据类型的比较
21.9.2 LONG与LOB数据类型的转换
21.10 小结
21.11 练习
第22章 开发Web应用程序
22.1 PL/SQL Web应用程序概念
22.1.1 使用PL/SQL存储过程和函数
22.1.2 PL/SQL Server Pages
22.1.3 为XML启用PL/SQL Web应用程序
22.2 设置和检验PL/SQL服务器页
22.2.1 安装Oracle HTTP Server
22.2.2 创建一个PSP文件
22.2.3 将PSP文件导入到数据库
22.2.4 设置Oracle HTTP Server
22.2.5 从浏览器中调用PSP
22.3 PL/SQL Web应用程序的参数传递
22.3.1 从HTML表单中传递列表框或微调框参数
22.3.2 从HTML表单中传递单选按钮或复选框参数
22.3.3 从HTML表单传递输入域参数
22.3.4 从HTML表单中传递隐藏参数的值
22.3.5 提交一张完整的HTML表单
22.3.6 从HTML表单中处理丢失的输入
22.3.7 在网页之间维护状态信息
22.4 在PL/SQL存储过程中执行网络操作
22.4.1 从PL/SQL中发送邮件
22.4.2 从PL/SQL中得到一个主机名或地址
22.4.3 在PL/SQL中操作TCP/IP连接
22.4.4 从PL/SQL中检索一个HTTP URL的内容
22.4.5 操作表格、图像、Cookies和CGI变量
22.5 PL/SQL Server Pages
22.5.1 选择一个软件配置
22.5.2 为PL/SQL服务器页编写代码和内容
22.5.3 把PL/SQL服务器页装载到数据库存储过程
22.6 PL/SQL Server Pages实例
22.6.1 一次性显示表的内容
22.6.2 使用循环打印表的内容
22.6.3 用户选择
22.6.4 调用PL/SQL服务器页的HTML表单
22.6.5 在PSP文件中包含JavaScript
22.6.6 调试PL/SQL Server Pages
22.6.7 将PSP应用程序加入产品
22.7 小结
22.8 练习
第23章 调整PL/SQL应用程序
23.1 PL/SQL性能问题的原因
23.2 识别PL/SQL性能问题
23.2.1 剖析API:DBMS_PROFILER包
23.2.2 跟踪API:DBMS_TRACE包
23.3 性能调整的PL/SQL特征
23.3.1 通过本机动态SQL改进PL/SQL性能
23.3.2 通过批联编提高PL/SQL性能
23.3.3 使用NOCOPY编译器提示来提高PL/SQL性能
23.3.4 使用RETURNING子句提高PL/SQL性能
23.3.5 使用外部程序提高PL/SQL性能
23.3.6 使用对象类型和集合来提高PL/SQL性能
23.3.7 编译PL/SQL代码以便于本地执行
23.4 小结
附录一 PL/SQL保留字
附录二 部分练习答案
附录三 部分表结构
附录四 SQL*Plus的使用
F4.1 启动SQL*Plus
F4.2 输入和执行命令
F4.3 编辑SQL命令
F4.4 创建和修改命令文件
F4.5 环境变量的设置和保存
F4.6 编写交互命令
F4.7 格式化查询结果
猜您喜欢