作品简介

在信息技术高速发展的今天,任何的大型信息系统都是以数据库技术为支撑的。Oracle数据库作为数据库领域的先驱者,凭借其雄厚的技术实力,以高稳定性、可伸缩性、高可靠性、高安全性、跨平台特性等得到业界的一致认可,成为数据库市场名副其实的领军者,遍布于工业、商业、金融、保险、航空等各个领域。在数据库市场,Oracle数据库产品的市场占有率高达50%,远远领先于其他数据库产品,可以不夸张地说,Oracle数据库产品已经遍布世界的每个角落。作为Oracle数据库的过程化的SQL语言,PL/SQL程序在Oracle项目开发过程中得到广泛应用,有Oracle数据库应用的地方,就有PL/SQL程序的应用。因此,系统深入地学习PL/SQL程序设计是Oracle数据库开发所必需的。

作者:孙风栋,王澜,郭晓惠

作品目录

  • Oracle 12c PL/SQL程序设计终极指南
  • 前言
  • 为什么要写这本书
  • 读者对象
  • 如何阅读本书
  • 勘误和支持
  • 致谢
  • 基础篇
  • 第1章 PL/SQL概述
  • 1.4.1 PL/SQL引擎
  • 1.4.2 PL/SQL单元与编译参数
  • 1.6.1 案例数据库表与序列
  • 1.6.2 创建表与序列
  • 1.6.3 向表中插入数据
  • 第2章 PL/SQL开发工具的使用
  • 2.1.1 SQL Plus简介
  • 2.1.2 SQL Plus的启动与退出
  • 2.1.3 SQL Plus常用命令
  • 2.2.1 SQL Developer简介
  • 2.2.2 创建数据库连接
  • 2.2.3 浏览与管理数据库对象
  • 2.2.4 执行SQL语句
  • 2.2.5 开发PL/SQL程序
  • 2.2.6 执行与调试PL/SQL程序
  • 2.3.1 PL/SQL Developer简介
  • 2.3.2 连接数据库
  • 2.3.3 编写与运行PL/SQL程序
  • 2.3.4 测试PL/SQL程序
  • 第3章 PL/SQL基础
  • 3.1.1 PL/SQL块结构
  • 3.1.2 PL/SQL块分类
  • 3.2.1 字符集
  • 3.3.2 标识符
  • 3.2.3 分隔符
  • 3.2.4 字面值
  • 3.2.5 注释
  • 3.3.1 PL/SQL数据类型概述
  • 3.3.2 字符类型
  • 3.3.3 数字类型
  • 3.3.4 日期/时间类型
  • 3.3.5 布尔类型
  • 3.3.6 复合类型
  • 3.3.7 引用类型
  • 3.3.8 LOB类型
  • 3.3.9 %TYPE属性
  • 3.3.10 %ROWTYPE属性
  • 3.4.1 常量与变量的声明
  • 3.4.2 变量作用域与可见性
  • 3.5.1 运算符
  • 3.5.2 表达式
  • 第4章 PL/SQL控制语句
  • 4.1.1 IF语句
  • 4.1.2 CASE语句
  • 4.2.1 简单循环语句
  • 4.2.2 WHILE循环语句
  • 4.2.3 FOR循环语句
  • 4.2.4 CONTINUE语句
  • 4.3.1 GOTO语句
  • 4.3.2 NULL语句
  • 第5章 数据查询
  • 5.1.1 SQL语言介绍
  • 5.1.2 SQL语言的分类
  • 5.1.3 SQL语言的特点
  • 5.3.1 无条件查询
  • 5.3.2 有条件查询
  • 5.5.1 常用的聚集函数
  • 5.5.2 分组查询的语法
  • 5.5.3 单列分组查询
  • 5.5.4 多列分组查询
  • 5.5.5 使用HAVING子句
  • 5.5.6 使用ROLLUP和CUBE子句
  • 5.5.7 合并分组查询
  • 5.6.1 笛卡尔积连接
  • 5.6.2 内连接
  • 5.6.3 自然连接
  • 5.6.4 使用USING子句的连接
  • 5.6.5 外连接
  • 5.7.1 子查询概述
  • 5.7.2 单行单列子查询
  • 5.7.3 多行单列子查询
  • 5.7.4 单行多列子查询
  • 5.7.5 多行多列子查询
  • 5.7.6 相关子查询
  • 5.7.7 在FROM子句中使用子查询
  • 5.7.8 在DDL语句中使用子查询
  • 5.7.9 使用WITH子句的子查询
  • 5.8.1 层次结构的概念
  • 5.8.2 层次查询的语法
  • 5.8.3 层次查询的执行过程
  • 5.8.4 层次查询相关伪列
  • 5.9.1 UNION
  • 5.9.2 UNION ALL
  • 5.9.3 INTERSECT
  • 5.9.4 MINUS
  • 5.10.1 分析查询概述
  • 5.10.2 分析查询的语法
  • 5.10.3 分析函数的应用
  • 5.11.1 Oracle 12c之前的TOP-N与分页查询
  • 5.11.2 Oracle 12c中的TOP-N与分页查询
  • 第6章 数据操纵与事务控制
  • 6.1.1 数据插入介绍
  • 6.1.2 INSERT语句的语法
  • 6.1.3 插入单行记录
  • 6.1.4 使用子查询插入数据
  • 6.1.5 使用Direct-Path方法插入数据
  • 6.1.6 无条件多表插入
  • 6.1.7 有条件多表插入
  • 6.2.1 UPDATE语句的语法
  • 6.2.2 使用子查询修改数据
  • 6.4.1 DELETE语句的语法
  • 6.4.2 使用子查询删除数据
  • 6.4.3 使用TRUNCATE清除数据
  • 6.5.1 事务概述
  • 6.5.2 Oracle事务的隔离级别
  • 6.5.3 使用SET TRANSACTION语句设置事务
  • 6.5.4 事务提交与回滚
  • 6.6.1 Oracle数据库中锁的分类
  • 6.6.2 Oracle数据库中的DML锁
  • 6.6.3 使用LOCK TABLE语句
  • 第7章 内置SQL函数
  • 7.2.1 数字函数
  • 7.2.2 字符函数
  • 7.2.3 日期函数
  • 7.2.4 转换函数
  • 7.2.5 空值函数
  • 7.2.6 其他单行函数
  • 第8章 PL/SQL中的静态SQL语句
  • 8.1.1 静态SQL语句类型
  • 8.1.2 PL/SQL中的SELECT语句
  • 8.1.3 PL/SQL中的DML语句
  • 8.1.4 PL/SQL中的字符匹配
  • 8.2.1 游标概述
  • 8.2.2 声明与定义显式游标
  • 8.2.3 打开与关闭显式游标
  • 8.2.4 检索显式游标
  • 8.2.5 显式游标的属性
  • 8.2.6 显式游标定义中的变量
  • 8.2.7 参数化显式游标
  • 8.2.8 FOR UPDATE游标
  • 8.3.1 隐式游标介绍
  • 8.3.2 隐式游标的属性
  • 8.4.1 游标变量简介
  • 8.4.2 声明游标变量
  • 8.4.3 打开与关闭游标变量
  • 8.4.4 检索游标变量
  • 8.6.1 自治事务的概念
  • 8.6.2 声明自治程序
  • 8.6.3 自治事务的控制
  • 8.6.4 自治触发器
  • 第9章 记录
  • 9.3.1 声明记录类型变量
  • 9.3.2 利用%ROWTYPE声明记录类型变量
  • 9.3.3 记录类型变量赋值
  • 9.4.1 记录类型变量在SELECT语句中的应用
  • 9.4.2 记录类型变量在INSERT语句中的应用
  • 9.4.3 记录类型变量在UPDATE语句中的应用
  • 9.4.4 DML语句中记录类型变量使用的限制
  • 第10章 错误处理
  • 10.2.1 Oracle错误处理机制
  • 10.2.2 使用异常处理的优点
  • 10.3.1 预定义异常
  • 10.3.2 内部定义异常
  • 10.3.3 用户定义异常
  • 10.4.1 用户定义异常的抛出
  • 10.4.2 预定义异常的抛出
  • 10.4.3 内部定义异常的抛出
  • 10.4.4 重新抛出当前异常
  • 10.4.5 RAISE_APPLICATION_ERROR方法的使用
  • 10.5.1 异常处理器
  • 10.5.2 OTHERS异常处理器
  • 10.6.1 执行部分异常的传播
  • 10.6.2 声明部分与异常处理部分异常的传播
  • 10.7.1 异常处理的基本原则
  • 10.7.2 异常的范围
  • 10.7.3 避免未处理的异常
  • 10.7.4 异常与事务
  • 10.7.5 错误位置标识
  • 开发篇
  • 第11章 PL/SQL子程序
  • 11.1.1 PL/SQL子程序的概念与分类
  • 11.1.2 PL/SQL子程序的优点
  • 11.2.1 子程序结构
  • 11.2.2 创建存储过程
  • 11.2.3 创建函数
  • 11.3.1 调用存储过程
  • 11.3.2 在PL/SQL程序中调用函数
  • 11.3.3 在SQL语句中调用函数
  • 11.4.1 形式参数与实际参数
  • 11.4.2 参数的传递方式
  • 11.4.3 参数模式
  • 11.4.4 NOCOPY关键字
  • 11.4.5 参数的约束
  • 11.4.6 IN模式参数默认值
  • 11.4.7 无参子程序
  • 11.4.8 实参与形参的对应关系
  • 11.5.1 嵌套子程序的概念
  • 11.5.2 嵌套子程序的创建
  • 11.5.3 嵌套子程序的向前声明
  • 11.5.4 嵌套子程序的重载
  • 第12章 PL/SQL包
  • 12.1.1 包的概念
  • 12.1.2 包的分类
  • 12.1.3 使用包的优点
  • 12.2.1 包规范
  • 12.2.2 包体
  • 12.7.1 变量持续性
  • 12.7.2 游标持续性
  • 12.7.3 SERIALLY_REUSABLE包
  • 第13章 子程序依赖性与权限管理
  • 13.1.1 对象依赖性的概念
  • 13.1.2 对象依赖关系查询
  • 13.2.1 子程序的依赖关系
  • 13.2.2 包的依赖性关系
  • 13.3.1 远程依赖关系的建立
  • 13.3.2 远程依赖失效的识别
  • 13.4.1 子程序调用需要的权限
  • 13.4.2 子程序定义者需要的权限
  • 第14章 触发器
  • 14.1.1 触发器的概念
  • 14.1.2 触发器的作用
  • 14.1.3 触发器的种类
  • 14.1.4 触发器的结构
  • 14.2.1 简单DML触发器概述
  • 14.2.2 语句级简单DML触发器
  • 14.2.3 行级简单DML触发器
  • 14.2.4 简单DML触发器的执行顺序
  • 14.3.1 INSTEAD OF DML触发器概述
  • 14.3.2 创建INSTEAD OF DML触发器
  • 14.3.3 基于视图嵌套表列的INSTEAD OF DML触发器
  • 14.4.1 复合DML触发器概述
  • 14.4.2 创建复合DML触发器
  • 14.4.3 复合DML触发器应用
  • 14.6.1 系统触发器的响应事件
  • 14.6.2 创建系统触发器
  • 14.6.3 事件属性函数
  • 14.7.1 变异表触发器的限制
  • 14.7.2 变异表触发器应用
  • 14.9.1 触发器定义的限制
  • 14.9.2 触发器的禁用与激活
  • 14.9.3 触发器的修改、重编译与删除
  • 14.9.4 触发器的信息查询
  • 第15章 集合
  • 15.2.1 联合数组概述
  • 15.2.2 定义联合数组
  • 15.2.3 操作联合数组
  • 15.3.1 嵌套表概述
  • 15.3.2 定义嵌套表
  • 15.3.3 初始化嵌套表
  • 15.3.4 操作嵌套表
  • 15.4.1 可变数组概述
  • 15.4.2 可变数组的定义与初始化
  • 15.4.3 操作可变数组
  • 15.6.1 集合类型变量与NULL的比较
  • 15.6.2 嵌套表变量比较
  • 15.6.3 嵌套表变量多集合条件比较
  • 15.7.1 嵌套表在数据库中的应用
  • 15.7.2 可变数组在数据库中的应用
  • 第16章 动态SQL语句
  • 16.1.1 动态SQL语句的概念
  • 16.1.2 动态SQL语句与静态SQL语句的比较
  • 16.2.1 EXECUTE IMMEDIATE语句
  • 16.2.2 动态DDL操作
  • 16.2.3 动态DCL操作
  • 16.2.4 动态DML操作
  • 16.2.5 动态单行查询操作
  • 16.2.6 动态多行查询操作
  • 16.2.7 在动态SQL语句中调用子程序
  • 16.2.8 动态SQL语句中的重名占位符
  • 16.3.1 DBMS_SQL包概述
  • 16.3.2 DBMS_SQL包中方法介绍
  • 16.3.3 DBMS_SQL操作流程
  • 16.3.4 使用DBMS_SQL包执行动态DDL语句
  • 16.3.5 使用DBMS_SQL包进行动态DML语句
  • 16.3.6 使用DBMS_SQL包执行动态查询语句
  • 16.3.7 使用DBMS_SQL包执行匿名块
  • 16.3.8 其他常用DBMS_SQL方法应用
  • 第17章 批绑定
  • 17.2.1 FORALL语句的语法
  • 17.2.2 FORALL语句与FOR LOOP语句比较
  • 17.2.3 批量DML操作
  • 17.2.4 使用稀疏集合的FORALL语句
  • 17.2.5 FORALL语句的异常处理
  • 17.2.6 获取FORALL语句影响的记录数量
  • 17.3.1 SELECT BULK COLLECT语句
  • 17.3.2 FETCH BULK COLLECT语句
  • 17.3.3 RETURNING BULK COLLECT短语
  • 17.4.1 动态批量DML操作
  • 17.4.2 动态批查询操作
  • 高级篇
  • 第18章 对象
  • 18.1.1 Oracle对象简介
  • 18.1.2 使用Oracle对象的优势
  • 18.1.3 Oracle数据库的对象特性
  • 18.2.1 对象类型规范
  • 18.2.2 对象类型体
  • 18.3.1 MEMBER方法
  • 18.3.2 STATIC方法
  • 18.3.3 MAP与ORDER方法
  • 18.3.4 构造方法
  • 18.4.1 对象类型继承概述
  • 18.4.2 FINAL与NOT FINAL对象类型与方法
  • 18.4.3 创建子对象类型
  • 18.4.4 方法重定义与重载
  • 18.4.5 NOT INSTANTIABLE对象类型与方法
  • 18.5.1 创建对象表
  • 18.5.2 操作对象表
  • 18.5.3 操作列对象
  • 18.5.4 对象引用
  • 18.6.1 对象视图概述
  • 18.6.2 创建对象视图
  • 18.6.3 在对象视图中嵌套对象
  • 18.6.4 操作对象视图
  • 18.7.1 对象的声明与初始化
  • 18.7.2 操作PL/SQL中的对象
  • 18.9.1 修改对象类型
  • 18.9.2 删除对象类型
  • 第19章 大对象
  • 19.1.1 为什么使用大对象
  • 19.1.2 LOB与LONG的比较
  • 19.1.3 LOB分类
  • 19.1.4 LOB存储结构与定位器
  • 19.1.5 LOB操作技术与接口
  • 19.2.1 创建包含LOB列的数据库表
  • 19.2.2 利用SQL操作内部LOB
  • 19.2.3 利用SQL操作外部LOB
  • 19.3.1 DBMS_LOB包简介
  • 19.3.2 DBMS_LOB包中子程序介绍
  • 19.4.1 利用DBMS_LOB包操作CLOB对象
  • 19.4.2 利用DBMS_LOB包操作BLOB对象
  • 19.4.3 利用DBMS_LOB包操作BFILE对象
  • 第20章 Oracle任务调度
  • 20.1.1 Oracle调度器的概念
  • 20.1.2 调度对象
  • 20.2.1 创建作业对象
  • 20.2.2 修改作业对象
  • 20.2.3 运行作业对象
  • 20.2.4 停止作业对象
  • 20.2.5 删除作业对象
  • 20.2.6 禁用作业对象
  • 20.2.7 激活作业对象
  • 第21章 PL/SQL性能优化
  • 21.3.1 SQL语句优化概述
  • 21.3.2 SQL语句执行过程
  • 21.3.3 将常用程序驻留内存
  • 21.3.4 有效使用索引
  • 21.3.5 采用适当的多表连接技术
  • 21.3.6 SQL语句使用技巧
  • 21.4.1 优化查询中的函数调用
  • 21.4.2 优化子程序调用
  • 21.4.3 优化循环
  • 21.4.4 优化用于计算的PL/SQL代码
  • 21.4.5 使用SQL字符函数
  • 21.4.6 批SQL与批绑定
  • 21.5.1 表函数概述
  • 21.5.2 创建管道表函数
  • 21.5.3 管道表函数作为转换函数
  • 21.5.4 检索管道表函数的返回结果集
  • 21.5.5 向管道表函数传递游标表达式
  • 21.6.1 使用Profiler API工具
  • 21.6.2 使用Trace API工具
  • 21.6.3 使用PL/SQL hierarchical profiler工具
  • 第22章 常用的Oracle内置包
  • 22.5.1 DBMS_METADATA包简介
  • 22.5.2 DBMS_METADATA包中子程序
  • 22.8.1 Oracle管道通信概述
  • 22.8.2 DBMS_PIPE包中子程序
展开全部