一、理解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、高度安全
一、字符集
二、詞法單元
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值
八、內置函數
一、預定義數據類型
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控制結構一覽
二、條件控制: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語句
一、什麼是集合
1、理解嵌套表
2、理解變長數組
3、理解關聯數組(索引表)
4、全球化設置對使用VARCHAR2類型作主鍵的關聯數組的影響
二、集合類型的選擇
1、嵌套表與關聯數組間的選擇
2、嵌套表與變長數組間的選擇
三、定義集合類型
1、定義與PL/SQL集合類型等價的SQL類型
四、聲明PL/SQL集合變量
五、初始化與引用集合
1、引用集合中的元素
六、集合的賦值
七、比較集合
八、在SQL語句中使用PL/SQL的集合類型
1、關於嵌套表的例子
2、變長數組的一些例子
3、使用SQL語句操作特定的集合元素
九、使用多級集合
十、集合的方法
1、檢測集合中的元素是否存在(EXI
STS)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支持的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異常
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函數
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代碼