內容簡介

本書通過實際的實驗、示例和項目來講解你所需的全部PL/SQL技能,它涵蓋從基礎語法、程序控制到新的優化和安全增強等方面的知識。讀者循序漸進地學習每個關鍵任務,自己就能掌握當今有價值的Oracle12c的PL/SQL編程技術。

本書的方法完全反映了作者在哥倫比亞大學給專業人員講授PL/SQL的廣受好評的經驗。數據庫開發的新手和DBA可以通過學習本書快速獲得成效。有經驗的PL/SQL程序員會發現本書是很好的Oracle12c的解決方案參考。

About the AuthorBenjamin Rosenzweig,是Misys財務軟件公司的高級項目經理,他自2002年以來一直在那里工作。在此之前,他曾在Oracle公司定制開發部擔任了三年以上的首席顧問。他所做的計算機工作包括在尼泊爾加德滿都建立電子藏英詞典,為高盛公司演示中心做支持,以及管理TIAA-CREF的交易系統。自1998年以來,Benjamin一直在紐約市哥倫比亞大學計算機技術與應用項目擔任教師,在2002年,他被CTA項目的主席和董事授予「優秀教學獎」。他擁有里德學院的學士學位和哥倫比亞大學頒發的數據庫開發和設計證書。他從前與Prentice Hall合著的書籍包括《Oracle Forms Developer:The Complete Video Course (2000)》和《Oracle Web Application Programming for PL/SQL Developers(2003)》。

Elena Rakhimov,擁有超過20年的數據庫架構和開發經驗,曾服務於各種企業和商業環境,從非營利組織到華爾街到她目前在知名軟件公司領導數據庫團隊的職位。盡管Elena決定從事「實際操作」,但她在學術領域也很有建樹,她在哥倫比亞大學受到高度評價的計算機技術與應用項目中執教關系數據庫編程。她曾在哥倫比亞大學學習數據庫分析和設計,並在阿塞拜疆的巴庫國立大學學習應用數學。她目前居住在加拿大溫哥華。
 

目錄

譯者序
前言
作者簡介
致謝

第1章 PL/SQL概念 1
1.1 實驗1:PL/SQL架構 1使用 8
1.2.2 初步掌握SQL Plus的使用 10
1.2.3 執行PL/SQL腳本 11
1.3 實驗3:PL/SQL基礎知識 14
1.3.1 DBMS_OUTPUT.PUT_LINE語句 14
1.3.2 替代變量功能 17
1.4 總結 21

第2章 PL/SQL語言基礎 22
2.1 實驗:PL/SQL編程基礎 22
2.1.1 PL/SQL語言組件 23
2.1.2 PL/SQL變量 23
2.1.3 PL/SQL保留字 26
2.1.4 PL/SQL中的標識符 26
2.1.5 掛靠的數據類型 27
2.1.6 聲明和初始化變量 29
2.1.7 塊作用域、嵌套塊和標簽 32
2.2 總結 34

第3章 在PL/SQL中的SQL 35
3.1 實驗1:在PL/SQL中的DML語句 35
3.1.1 使用SELECT INTO初始化變量 36
3.1.2 使用變量初始化的SELECTINTO語法 37
3.1.3 在PL/SQL塊中使用DML 38
3.1.4 在PL/SQL塊中使用序列 39
3.2 實驗2:在PL/SQL中的事務控制 40
3.2.1 使用COMMIT、ROLLBACK和SAVEPOINT 40
3.2.2 將DML和事務控制相結合 43
3.3 總結 45

第4章 條件控制:IF語句 46
4.1 實驗1:IF語句 46
4.1.1 IF-THEN語句 47
4.1.2 IF-THEN-ELSE語句 48
4.2 實驗2:ELSIF語句 50
4.3 實驗3:嵌套的IF語句 54
4.4 總結 56

第5章 條件控制:CASE語句 57
5.1 實驗1:CASE語句 57
5.1.1 CASE語句 57
5.1.2 搜索CASE語句 59
5.2 實驗2:CASE表達式 64
5.3 實驗3:NULLIF和COALESCE函數 67
5.3.1 NULLIF函數 67
5.3.2 COALESCE函數 69
5.4 總結 71

第6章 迭代控制:第一部分 72
6.1 實驗1:簡單循環 72
6.1.1 EXIT語句 73
6.1.2 EXIT WHEN語句 76
6.2 實驗2:WHILE循環 77
6.2.1 使用WHILE循環 77
6.2.2 提前終止WHILE循環 80
6.3 實驗3:數字FOR循環 81
6.3.1 在循環中使用IN選項 82
6.3.2 在循環中使用REVERSE選項 84
6.3.3 提前終止數字FOR循環 84
6.4 總結 85

第7章 迭代控制:第二部分 86
7.1 實驗1:CONTINUE語句 86
7.1.1 使用CONTINUE語句 86
7.1.2 CONTINUE WHEN語句 89
7.2 實驗2:嵌套循環 92
7.2.1 使用嵌套循環 92
7.2.2 使用循環標簽 93
7.3 總結 95

第8章 錯誤處理和內置異常 96
8.1 實驗1:處理錯誤 96
8.2 實驗2:內置異常 98
8.3 總結 103

第9章 異常 104
9.1 實驗1:異常作用域 104
9.2 實驗2:用戶定義的異常 107
9.3 實驗3:異常傳播 111
9.4 總結 116

第10章 異常:高級概念 117
10.1 實驗1:RAISE_APPLICATIONERROR 117
10.2 實驗2:EXCEPTION_INIT編譯指示 120
10.3 實驗3:SQLCODE和SQLERRM 122
10.4 總結 124

第11章 游標簡介 125
11.1 實驗1:游標類型 125
11.1.1 使用隱式游標 126
11.1.2 使用顯式游標 127
11.2 實驗2:游標循環 130
11.2.1 處理顯式游標 130
11.2.2 使用用戶定義的記錄 133
11.2.3 使用游標屬性 134
11.3 實驗3:游標FOR循環 138
11.4 實驗4:嵌套游標 139
11.5 總結 143

第12章 高級游標 144
12.1 實驗1:參數化游標 144
12.2 實驗2:復雜的嵌套游標 145
12.3 實驗3:FOR UPDATE和WHERE CURRENT游標 147
12.3.1 FOR UPDATE游標 147
12.3.2 游標中的FOR UPDATE觸發器 151
13.1.1 數據庫觸發器 151
13.1.2 BEFORE觸發器 154
13.1.3 AFTER觸發器 159
13.1.4 自治事務 160
13.2  實驗2:觸發器類型 162
13.2.1 行觸發器和語句觸發器 162
13.2.2 INSTEAD OF觸發器 163
13.3  總結 167

第14章 變異表和復合觸發器 168
14.1 實驗1:變異表 168
14.1.1 什麼是變異表 168
14.1.2 解決變異表問題 170
14.2 實驗2:復合觸發器 172
14.2.1 什麼是復合觸發器 172
14.2.2 解決變異表問題的復合觸發器 174
14.3 總結 177

第15章 集合 178
15.1 實驗1:PL/SQL表 178
15.1.1 關聯數組 179
15.1.2 嵌套表 181
15.1.3 集合方法 184
15.2 實驗2:變長數組 187
15.3 實驗3:多級集合 190
15.4 總結 192

第16章 記錄 193
16.1 實驗1:記錄類型 193
16.1.1 基於表和基於游標的記錄 194
16.1.2 用戶定義的記錄 196
16.1.3 記錄兼容性 197
16.2 實驗2:嵌套記錄 199
16.3 實驗3:記錄集合 202
16.4 總結 205

第17章 本地動態SQL 206
17.1 實驗1:EXECUTE IMMEDIATE語句 206
17.1.1 使用EXECUTE IMMEDIATE 語句 207
17.1.2 如何避免使用EXECUTE IMMEDIATE的常見ORA錯誤 209
17.2 實驗2:OPEN-FOR、FETCH和 CLOSE語句 216
17.2.1 打開游標 216
17.2.2 從游標中讀取 217
17.2.3 關閉游標 217
17.3  總結 223

第18章 批量SQL 224
18.1 實驗1:FORALL語句 224
18.1.1 使用FORALL語句 225
18.1.2 SAVE EXCEPTIONS選項 228
18.1.3 INDICES OF選項 230
18.1.4 VALUES OF選項 230
18.2 實驗2:BULK COLLECT子句 232
18.3 實驗3:在SQL語句中綁定集合 239
18.3.1 將集合與EXECUTE IMMEDIATE語句綁定 240
18.3.2 將集合與OPEN-FOR、FETCH和CLOSE語句綁定 245
18.4 總結 248

第19章 過程 249
19.1 模塊化代碼的好處 249
19.1.1 塊結構 250
19.1.2 匿名塊 250
19.2 實驗1:創建過程 250
19.2.1 實踐創建過程的語法 251
19.2.2 查詢數據字典來獲取過程的 信息 252
19.3 實驗2:傳遞的過程參數IN和OUT 253
19.4 總結 255

第20章 函數 256
20.1 實驗1:創建函數 256
20.1.1 創建存儲函數 257
20.1.2 使用函數 259
20.2 實驗2:在SQL語句中使用函數 260
20.2.1 在SQL語句中調用函數 261
20.2.2 編寫復雜函數 261
20.3 實驗3:在SQL中優化函數執行 262
20.3.1 使用WITH子句定義函數 262
20.3.2 使用UDF編譯指示創建函數 263
20.4 總結 263

第21章 包 264
21.1 實驗1:創建包 264
21.1.1 創建包規范 265
21.1.2 創建包體 267
21.1.3 調用已存儲的包 269
21.1.4 創建私有對象 270
21.2 實驗2:游標變量 274
21.3 實驗3:擴展包 281
21.4 實驗4:包的實例化和初始化 292
21.5 實驗5:SERIALLY_REUSABLE包 294
21.6 總結 296

第22章 存儲代碼 297
22.1 實驗:收集存儲代碼的相關信息 297
22.1.1 從數據字典獲取存儲代碼的信息 297
22.1.2 重載模塊 300
22.2 總結 305

第23章 Oracle對象類型 306
23.1 實驗1:對象類型 306
23.1.1 創建對象類型 308
23.1.2 使用對象類型與集合 310
23.2 實驗2:對象類型的方法 314
23.2.1 構造方法 314
23.2.2 成員方法 316
23.2.3 靜態方法 317
23.2.4 比較對象 318
23.3 總結 322

第24章 Oracle提供的包 323
24.1 實驗1:利用Oracle提供的包擴展功能 323
24.1.1 在PL/SQL中利用UTL_FILE訪問文件 324
24.1.2 利用DBMS_JOB調度作業 327
24.1.3 利用DBMS_XPLAN生成解釋計划 329
24.1.4 利用DBMS_SQL產生隱式語句結果 333
24.2 實驗2:利用Oracle提供的包報告錯誤 334
24.2.1 利用DBMS_UTILITY包報告錯誤 334
24.2.2 利用UTL_CALL_STACK
網路書店 類別 折扣 價格
  1. 新書
    87
    $412