本書分為三篇,具體內容如下:基礎篇介紹PL/SQL程序設計的基礎知識,包括PL/SQL概述、PL/SQL開發工具、PL/SQL基礎、PL/SQL控制語句、數據查詢、數據操縱與事務處理、內置SQL函數、PL/SQL中的靜態SQL語句、記錄以及錯誤處理等。開發篇主要介紹PL/SQL命名對象的開發,包括PL/SQL子程序、PL/SQL包、子程序依賴性與權限管理、觸發器、集合、動態SQL、批綁定等,是PL/SQL程序設計的核心部分。在Oracle項目開發過程中,PL/SQL程序設計的主要任務就是根據業務需要編寫各種功能模塊,即PL/SQL命名塊。高級篇主要介紹Oracle數據庫中的對象及其特性、大對象的存儲與操作、任務調度管理、PL/SQL性能優化、常用的Oracle內置包等。
前 言
基 礎 篇
第1章 PL/SQL概述
1.1 什么是PL/SQL
1.2 PL/SQL優點
1.3 PL/SQL特性
1.4 PL/SQL運行機制
1.4.1 PL/SQL引擎
1.4.2 PL/SQL單元與編譯參數
1.5 PL/SQL 12.1新特性
1.6 案例數據庫介紹
1.6.1 案例數據庫表與序列
1.6.2 創建表與序列
1.6.3 向表中插入數據
1.7 使用Oracle文檔
1.8 小結
第2章 PL/SQL開發工具的使用
2.1 SQL Plus
2.1.1 SQL Plus簡介
2.1.2 SQL Plus的啟動與退出
2.1.3 SQL Plus常用命令
2.2 SQL Developer
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 PL/SQL Developer
2.3.1 PL/SQL Developer簡介
2.3.2 連接數據庫
2.3.3 編寫與運行PL/SQL程序
2.3.4 測試PL/SQL程序
2.4 小結
第3章 PL/SQL基礎
3.1 PL/SQL程序結構
3.1.1 PL/SQL塊結構
3.1.2 PL/SQL塊分類
3.2 PL/SQL詞法單元
3.2.1 字符集
3.3.2 標識符
3.2.3 分隔符
3.2.4 字面值
3.2.5 注釋
3.3 PL/SQL數據類型
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 PL/SQL變量與常量
3.4.1 常量與變量的聲明
3.4.2 變量作用域與可見性
3.5 運算符與表達式
3.5.1 運算符
3.5.2 表達式
3.6 編譯指示
3.7 小結
第4章 PL/SQL控制語句
4.1 條件選擇語句
4.1.1 IF語句
4.1.2 CASE語句
4.2 循環語句
4.2.1 簡單循環語句
4.2.2 WHILE循環語句
4.2.3 FOR循環語句
4.2.4 CONTINUE語句
4.3 順序控制語句
4.3.1 GOTO語句
4.3.2 NULL語句
4.4 小結
第5章 數據查詢
5.1 SQL語言概述
5.1.1 SQL語言介紹
5.1.2 SQL語言的分類
5.1.3 SQL語言的特點
5.2 SELECT語句基本語法
5.3 簡單查詢
5.3.1 無條件查詢
5.3.2 有條件查詢
5.4 查詢排序
5.5 分組查詢
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 連接查詢
5.6.1 笛卡爾積連接
5.6.2 內連接
5.6.3 自然連接
5.6.4 使用USING子句的連接
5.6.5 外連接
5.7 子查詢
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 層次查詢
5.8.1 層次結構的概念
5.8.2 層次查詢的語法
5.8.3 層次查詢的執行過程
5.8.4 層次查詢相關偽列
5.9 集合查詢
5.9.1 UNION
5.9.2 UNION ALL
5.9.3 INTERSECT
5.9.4 MINUS
5.10 分析查詢
5.10.1 分析查詢概述
5.10.2 分析查詢的語法
5.10.3 分析函數的應用
5.11 TOPN與分頁查詢
5.11.1 Oracle 12c之前的TOPN與分頁查詢
5.11.2 Oracle 12c中的TOPN與分頁查詢
5.12 小結
第6章 數據操縱與事務控制
6.1 數據插入
6.1.1 數據插入介紹
6.1.2 INSERT語句的語法
6.1.3 插入單行記錄
6.1.4 使用子查詢插入數據
6.1.5 使用DirectPath方法插入數據
6.1.6 無條件多表插入
6.1.7 有條件多表插入
6.2 數據修改
6.2.1 UPDATE語句的語法
6.2.2 使用子查詢修改數據
6.3 MERGE語句
6.4 數據刪除
6.4.1 DELETE語句的語法
6.4.2 使用子查詢刪除數據
6.4.3 使用TRUNCATE清除數據
6.5 事務控制
6.5.1 事務概述
6.5.2 Oracle事務的隔離級別
6.5.3 使用SET TRANSACTION語句設置事務
6.5.4 事務提交與回滾
6.6 鎖
6.6.1 Oracle數據庫中鎖的分類
6.6.2 Oracle數據庫中的DML鎖
6.6.3 使用LOCK TABLE語句
6.7 小結
第7章 內置SQL函數
7.1 內置SQL函數概述
7.2 單行函數
7.2.1 數字函數
7.2.2 字符函數
7.2.3 日期函數
7.2.4 轉換函數
7.2.5 空值函數
7.2.6 其他單行函數
7.3 聚集函數
7.4 分析函數
7.5 其他函數
7.6 小結
第8章 PL/SQL中的靜態SQL語句
8.1 靜態SQL語句概述
8.1.1 靜態SQL語句類型
8.1.2 PL/SQL中的SELECT語句
8.1.3 PL/SQL中的DML語句
8.1.4 PL/SQL中的字符匹配
8.2 顯式游標
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 隱式游標
8.3.1 隱式游標介紹
8.3.2 隱式游標的屬性
8.4 游標變量
8.4.1 游標變量簡介
8.4.2 聲明游標變量
8.4.3 打開與關閉游標變量
8.4.4 檢索游標變量
8.5 游標表達式
8.6 自治事務
8.6.1 自治事務的概念
8.6.2 聲明自治程序
8.6.3 自治事務的控制
8.6.4 自治觸發器
8.7 小結
第9章 記錄
9.1 記錄類型概述
9.2 聲明記錄類型
9.3 記錄類型變量
9.3.1 聲明記錄類型變量
9.3.2 利用%ROWTYPE聲明記錄類型變量
9.3.3 記錄類型變量賦值
9.4 記錄類型變量的應用
9.4.1 記錄類型變量在SELECT語句中的應用
9.4.2 記錄類型變量在INSERT語句中的應用
9.4.3 記錄類型變量在UPDATE語句中的應用
9.4.4 DML語句中記錄類型變量使用的限制
9.5 小結
第10章 錯誤處理
10.1 編譯警告
10.2 異常處理概述
10.2.1 Oracle錯誤處理機制
10.2.2 使用異常處理的優點
10.3 異常的類型
10.3.1 預定義異常
10.3.2 內部定義異常
10.3.3 用戶定義異常
10.4 拋出異常
10.4.1 用戶定義異常的拋出
10.4.2 預定義異常的拋出
10.4.3 內部定義異常的拋出
10.4.4 重新拋出當前異常
10.4.5 RAISE_APPLICATION_ERROR方法的使用
10.5 捕獲與處理異常
10.5.1 異常處理器
10.5.2 OTHERS異常處理器
10.6 異常的傳播
10.6.1 執行部分異常的傳播
10.6.2 聲明部分與異常處理部分異常的傳播
10.7 異常處理策略
10.7.1 異常處理的基本原則
10.7.2 異常的范圍
10.7.3 避免未處理的異常
10.7.4 異常與事務
10.7.5 錯誤位置標識
10.8 小結
開 發 篇
第11章 PL/SQL子程序
11.1 PL/SQL子程序概述
11.1.1 PL/SQL子程序的概念與分類
11.1.2 PL/SQL子程序的優點
11.2 獨立子程序
11.2.1 子程序結構
11.2.2 創建存儲過程
11.2.3 創建函數
11.3 調用子程序
11.3.1 調用存儲過程
11.3.2 在PL/SQL程序中調用函數
11.3.3 在SQL語句中調用函數
11.4 子程序參數
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 嵌套子程序
11.5.1 嵌套子程序的概念
11.5.2 嵌套子程序的創建
11.5.3 嵌套子程序的向前聲明
11.5.4 嵌套子程序的重載
11.6 獨立子程序的管理
11.7 小結
第12章 PL/SQL包
12.1 包概述
12.1.1 包的概念
12.1.2 包的分類
12.1.3 使用包的優點
12.2 創建包
12.2.1 包規范
12.2.2 包體
12.3 調用包
12.4 重載包
12.5 實例化與初始化包
12.6 包的純度等級
12.7 包的狀態
12.7.1 變量持續性
12.7.2 游標持續性
12.7.3 SERIALLY_REUSABLE包
12.8 包編寫指南
12.9 STANDARD包
12.10 包管理
12.11 小結
第13章 子程序依賴性與權限管理
13.1 對象依賴性概述
13.1.1 對象依賴性的概念
13.1.2 對象依賴關系查詢
13.2 子程序的本地依賴性
13.2.1 子程序的依賴關系
13.2.2 包的依賴性關系
13.3 子程序的遠程依賴性
13.3.1 遠程依賴關系的建立
13.3.2 遠程依賴失效的識別
13.4 子程序權限概述
13.4.1 子程序調用需要的權限
13.4.2 子程序定義者需要的權限
13.5 調用者權限與定義者權限
13.6 小結
第14章 觸發器
14.1 觸發器簡介
14.1.1 觸發器的概念
14.1.2 觸發器的作用
14.1.3 觸發器的種類
14.1.4 觸發器的結構
14.2 簡單的DML觸發器
14.2.1 簡單DML觸發器概述
14.2.2 語句級簡單DML觸發器
14.2.3 行級簡單DML觸發器
14.2.4 簡單DML觸發器的執行順序
14.3 INSTEAD OF DML觸發器
14.3.1 INSTEAD OF DML觸發器概述
14.3.2 創建INSTEAD OF DML觸發器
14.3.3 基于視圖嵌套表列的INSTEAD OF DML觸發器
14.4 復合DML觸發器
14.4.1 復合DML觸發器概述
14.4.2 創建復合DML觸發器
14.4.3 復合DML觸發器應用
14.5 利用DML觸發器保障引用完整性
14.6 系統觸發器
14.6.1 系統觸發器的響應事件
14.6.2 創建系統觸發器
14.6.3 事件屬性函數
14.7 變異表觸發器
14.7.1 變異表觸發器的限制
14.7.2 變異表觸發器應用
14.8 觸發器設計指南
14.9 觸發器管理
14.9.1 觸發器定義的限制
14.9.2 觸發器的禁用與激活
14.9.3 觸發器的修改、重編譯與刪除
14.9.4 觸發器的信息查詢
14.10 小結
第15章 集合
15.1 集合概述
15.2 聯合數組
15.2.1 聯合數組概述
15.2.2 定義聯合數組
15.2.3 操作聯合數組
15.3 嵌套表
15.3.1 嵌套表概述
15.3.2 定義嵌套表
15.3.3 初始化嵌套表
15.3.4 操作嵌套表
15.4 可變數組
15.4.1 可變數組概述
15.4.2 可變數組的定義與初始化
15.4.3 操作可變數組
15.5 集合方法
15.6 集合類型變量的比較
15.6.1 集合類型變量與NULL的比較
15.6.2 嵌套表變量比較
15.6.3 嵌套表變量多集合條件比較
15.7 獨立集合類型
15.7.1 嵌套表在數據庫中的應用
15.7.2 可變數組在數據庫中的應用
15.8 在包中定義的集合類型
15.9 多維集合
15.10 小結
第16章 動態SQL語句
16.1 動態SQL語句概述
16.1.1 動態SQL語句的概念
16.1.2 動態SQL語句與靜態SQL語句的比較
16.2 本地動態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 DBMS_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方法應用
16.4 小結
第17章 批綁定
17.1 批綁定概述
17.2 FORALL語句
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 BULK COLLECT短語
17.3.1 SELECT BULK COLLECT語句
17.3.2 FETCH BULK COLLECT語句
17.3.3 RETURNING BULK COLLECT短語
17.4 動態批綁定
17.4.1 動態批量DML操作
17.4.2 動態批查詢操作
17.5 小結
高 級 篇
第18章 對象
18.1 Oracle對象概述
18.1.1 Oracle對象簡介
18.1.2 使用Oracle對象的優勢
18.1.3 Oracle數據庫的對象特性
18.2 對象類型定義
18.2.1 對象類型規范
18.2.2 對象類型體
18.3 對象類型方法
18.3.1 MEMBER方法
18.3.2 STATIC方法
18.3.3 MAP與ORDER方法
18.3.4 構造方法
18.4 對象類型的繼承
18.4.1 對象類型繼承概述
18.4.2 FINAL與NOT FINAL對象類型與方法
18.4.3 創建子對象類型
18.4.4 方法重定義與重載
18.4.5 NOT INSTANTIABLE對象類型與方法
18.5 操作數據庫中對象
18.5.1 創建對象表
18.5.2 操作對象表
18.5.3 操作列對象
18.5.4 對象引用
18.6 對象視圖
18.6.1 對象視圖概述
18.6.2 創建對象視圖
18.6.3 在對象視圖中嵌套對象
18.6.4 操作對象視圖
18.7 在PL/SQL中使用對象類型
18.7.1 對象的聲明與初始化
18.7.2 操作PL/SQL中的對象
18.8 與對象相關的函數和操作符
18.9 對象類型的管理
18.9.1 修改對象類型
18.9.2 刪除對象類型
18.10 小結
第19章 大對象
19.1 大對象概述
19.1.1 為什么使用大對象
19.1.2 LOB與LONG的比較
19.1.3 LOB分類
19.1.4 LOB存儲結構與定位器
19.1.5 LOB操作技