Oracle PL/SQL實(shí)例精解(原書(shū)第6版)
定 價(jià):129 元
- 作者:[美]本杰明·羅森維格,[加]艾琳娜·拉希莫夫
- 出版時(shí)間:2024/11/1
- ISBN:9787111765349
- 出 版 社:機(jī)械工業(yè)出版社
- 中圖法分類(lèi):
- 頁(yè)碼:
- 紙張:膠版紙
- 版次:
- 開(kāi)本:16開(kāi)
本書(shū)根據(jù)PL/SQL的新版本進(jìn)行了全面更新,涵蓋從基礎(chǔ)語(yǔ)法、程序控制到最新的優(yōu)化和調(diào)優(yōu)增強(qiáng)等方面的知識(shí),通過(guò)真實(shí)的實(shí)驗(yàn)、大量的示例講解了PL/SQL技能,是一本逐步分解的、詳盡的PL/SQL編程教程。讀者可以按照本書(shū)的步驟一步一步地完成每一個(gè)關(guān)鍵任務(wù),掌握Oracle 21c PL/SQL編程技術(shù),深度探索PL/SQL編程技術(shù)及最佳實(shí)踐。本書(shū)既適合新手?jǐn)?shù)據(jù)庫(kù)開(kāi)發(fā)人員和DBA閱讀,也適合有一定經(jīng)驗(yàn)的從業(yè)人員閱讀。
使用Oracle 21c的PL/SOL,我們可以構(gòu)建在任何環(huán)境(包括云環(huán)境)下都能提供前所未有的性能和效率的解決方案。本書(shū)通過(guò)真實(shí)的實(shí)驗(yàn)、大量的示例講解PL/SQL技能,并根據(jù)PL/SQL的最新版本進(jìn)行了全面更新,涵蓋從基礎(chǔ)語(yǔ)法、程序控制到最新的優(yōu)化和調(diào)優(yōu)增強(qiáng)等方面的知識(shí)。按照本書(shū)的步驟,我們可以一步一步地完成每一個(gè)關(guān)鍵任務(wù),掌握Oracle 21c PL/SQL編程技術(shù)。本書(shū)的寫(xiě)作方法充分反映了作者在哥倫比亞大學(xué)向?qū)I(yè)人士傳授PL/SOL編程經(jīng)驗(yàn)的技巧。數(shù)據(jù)庫(kù)開(kāi)發(fā)人員和DBA新手可以通過(guò)本書(shū)來(lái)快速提高生產(chǎn)效率,有經(jīng)驗(yàn)的PL/SQL程序員會(huì)發(fā)現(xiàn)本書(shū)是極好的Oracle 21c解決方案參考資料。第6版更新內(nèi)容: 全面更新代碼示例; 新增FOR循環(huán)語(yǔ)句的迭代控制,例如步進(jìn)范圍、多個(gè)迭代、集合和游標(biāo)迭代; 增強(qiáng)PL/SQL限定表達(dá)式; PL/SQL函數(shù)的性能增強(qiáng),例如SQL宏以及對(duì)結(jié)果緩存集的更好控制。通過(guò)閱讀本書(shū),你將能夠: 掌握PL/SQL的基本概念和語(yǔ)言基礎(chǔ),了解SQL在PL/SQL中的作用; 使用條件控制和迭代控制; 高效地處理錯(cuò)誤和異常; 使用游標(biāo)和觸發(fā)器,包括組合觸發(fā)器; 使用存儲(chǔ)過(guò)程、函數(shù)和包來(lái)編寫(xiě)其他程序可以運(yùn)行的模塊化代碼; 使用集合、對(duì)象關(guān)系特性、本地動(dòng)態(tài)SQL、批量SQL和其他高級(jí)特性。
前 言
本書(shū)采用一種獨(dú)特而高效的方式向讀者介紹Oracle PL/SQL編程語(yǔ)言,并通過(guò)實(shí)驗(yàn)讓讀者學(xué)習(xí)和使用Oracle PL/SQL編程語(yǔ)言,而不是簡(jiǎn)單地通過(guò)閱讀來(lái)學(xué)習(xí)。
正如同語(yǔ)法手冊(cè)首先通過(guò)示例進(jìn)行演示,然后讓我們編寫(xiě)語(yǔ)句,最后教我們有關(guān)名詞和動(dòng)詞的用法一樣,本書(shū)首先通過(guò)示例進(jìn)行演示,然后讓讀者自己創(chuàng)建這些對(duì)象,以此教讀者有關(guān)循環(huán)、游標(biāo)、過(guò)程、觸發(fā)器等的用法。
本書(shū)的目標(biāo)讀者
本書(shū)是為那些需要快速詳細(xì)了解Oracle PL/SQL語(yǔ)言的編程人員準(zhǔn)備的。本書(shū)特別適合那些有一點(diǎn)關(guān)系數(shù)據(jù)庫(kù)和Oracle經(jīng)驗(yàn),特別是會(huì)使用SQL、SQL*Plus和SQL Developer但對(duì)PL/SQL或大多數(shù)其他編程語(yǔ)言不太了解的人閱讀。
本書(shū)的內(nèi)容主要基于哥倫比亞大學(xué)計(jì)算機(jī)技術(shù)與應(yīng)用(Computer Technology and Applications,CTA)項(xiàng)目中“Introduction to PL/SQL”課程所教授的內(nèi)容。學(xué)生的知識(shí)背景參差不齊,有一些學(xué)生具有多年的信息技術(shù)(IT)和編程經(jīng)驗(yàn),但沒(méi)有Oracle PL/SQL方面的經(jīng)驗(yàn);還有一些學(xué)生則完全沒(méi)有IT或編程經(jīng)驗(yàn)。與那門(mén)課一樣,本書(shū)內(nèi)容兼顧了這兩種極端的需求。
本書(shū)的組織結(jié)構(gòu)
本書(shū)旨在通過(guò)解釋編程概念或特定的PL/SQL功能教會(huì)讀者有關(guān)Oracle PL/SQL的編程知識(shí),然后通過(guò)示例進(jìn)一步說(shuō)明。通常,隨著主題的討論越來(lái)越深入,這些示例將被修改,以便用來(lái)說(shuō)明新涉及的內(nèi)容。
本書(shū)各章的基本結(jié)構(gòu)如下:
目標(biāo)
簡(jiǎn)介
實(shí)驗(yàn)
本章小結(jié)
“目標(biāo)”部分列出章內(nèi)所包含的主題;旧厦總(gè)目標(biāo)都對(duì)應(yīng)一個(gè)實(shí)驗(yàn)。
“簡(jiǎn)介”提供章內(nèi)所涉及的概念和功能的簡(jiǎn)要概述。
每個(gè)實(shí)驗(yàn)都涵蓋了“目標(biāo)”部分列出的一個(gè)目標(biāo)。在某些情況下,目標(biāo)在實(shí)驗(yàn)中被進(jìn)一步分解為更小的單元主題,然后每個(gè)主題都通過(guò)各種示例和輸出結(jié)果來(lái)說(shuō)明和演示。需要注意的是,我們會(huì)盡可能完整地提供每個(gè)示例,以便讀者可以獲得完整的代碼示例。
每章的最后都有“本章小結(jié)”部分,它對(duì)章內(nèi)所討論的內(nèi)容進(jìn)行了簡(jiǎn)要的總結(jié)。
先決條件
完成本書(shū)中的實(shí)驗(yàn)既需要有軟件程序,也需要具備必要的知識(shí)。需要注意的是,本書(shū)涉及的一些功能只適用于Oracle 21c。但是,使用下列產(chǎn)品可以運(yùn)行書(shū)中的大部分示例:
Oracle 18c或更高版本。
SQL Developer、SQL*Plus 18c或更高版本。
互聯(lián)網(wǎng)。
可以使用Oracle個(gè)人版或Oracle企業(yè)版來(lái)執(zhí)行本書(shū)中的示例。如果使用Oracle企業(yè)版,這些示例可以在一臺(tái)遠(yuǎn)程服務(wù)器或本地機(jī)器上運(yùn)行。建議使用Oracle 21c或Oracle 18c執(zhí)行本書(shū)中的所有或大部分示例。當(dāng)某個(gè)特性?xún)H適用于Oracle數(shù)據(jù)庫(kù)的最新版本時(shí),本書(shū)會(huì)明確說(shuō)明。此外,讀者應(yīng)該能夠訪問(wèn)SQL Developer或SQL*Plus工具并熟悉它們。
關(guān)于如何在SQL Developer或SQL*Plus中編輯和運(yùn)行腳本,有多種選擇。當(dāng)然,也有許多第三方程序可用來(lái)編輯和調(diào)試PL/SQL代碼。本書(shū)使用SQL Developer和SQL*Plus工具,因?yàn)檫@兩個(gè)工具都是Oracle提供的,安裝Oracle軟件時(shí)即可安裝它們。
第1章有一個(gè)標(biāo)題為“PL/SQL開(kāi)發(fā)環(huán)境”的實(shí)驗(yàn),其中介紹了如何啟動(dòng)與使用SQL Developer和SQL*Plus工具。但是,本書(shū)中的大多數(shù)示例都是在SQL Developer工具中執(zhí)行的。
關(guān)于示例中使用的模式
STUDENT模式包含表和其他對(duì)象,用來(lái)保存一個(gè)虛構(gòu)大學(xué)的注冊(cè)和登記系統(tǒng)的相關(guān)信息。系統(tǒng)中的10個(gè)表存儲(chǔ)了學(xué)生、課程、教師等相關(guān)數(shù)據(jù)。除了存儲(chǔ)學(xué)生和教師的聯(lián)系信息(地址和電話號(hào)碼)以及有關(guān)課程的描述信息(費(fèi)用和必修課程)之外,STUDENT模式還記錄了課程的課班(section)以及學(xué)生已經(jīng)登記的課班。
SECTION表是STUDENT模式中最重要的表之一,因?yàn)樗4媪藶槊块T(mén)課程創(chuàng)建的各個(gè)課班的數(shù)據(jù)。每個(gè)課班記錄還保存了此課班的時(shí)間、地點(diǎn)以及教師信息。SECTION表與COURSE表、INSTRUCTOR表之間存在著關(guān)聯(lián)關(guān)系。
ENROLLMENT表也同樣重要,因?yàn)樗涗浿男⿲W(xué)生已經(jīng)注冊(cè)了哪些課班。每條記錄還保存了有關(guān)學(xué)生的成績(jī)和注冊(cè)日期的信息。ENROLLMENT表與STUDENT表、SECTION表之間存在著關(guān)聯(lián)關(guān)系。
STUDENT模式還有其他幾個(gè)表,用來(lái)管理每個(gè)課班中每個(gè)學(xué)生的成績(jī)。
STUDENT模式的詳細(xì)結(jié)構(gòu)參見(jiàn)附錄B。
致 謝
我想說(shuō)這本書(shū)的出版離不開(kāi)很多人的幫助和建議。特別感謝Tonya Simpson和Chris Zahn進(jìn)行一絲不茍的編輯,以及Michael Rinomhota和Dan Hotka提供寶貴的技術(shù)經(jīng)驗(yàn)。非常感謝Malobika Chakraborty和Pearson公司的工作人員,是他們的不懈努力使這本書(shū)得以面世。此外,我也非常感謝我的家人,他們的激勵(lì)、熱忱、靈感和支持鼓勵(lì)著我努力工作并堅(jiān)持到最后,正是他們的愛(ài),才使我順利地完成本書(shū)的編寫(xiě)。
艾琳娜·拉希莫夫(Elena Rakhimov)擁有超過(guò)25年的數(shù)據(jù)庫(kù)架構(gòu)和開(kāi)發(fā)經(jīng)驗(yàn),從非營(yíng)利組織到華爾街再到她目前任職的知名咨詢(xún)公司,曾服務(wù)于眾多的企業(yè)和商業(yè)機(jī)構(gòu)。此外她還在哥倫比亞大學(xué)備受推崇的計(jì)算機(jī)技術(shù)與應(yīng)用項(xiàng)目中講授關(guān)系數(shù)據(jù)庫(kù)編程。
目 錄 Contents
譯者序
前 言
致 謝
Oracle 21c PL/SQL新特性簡(jiǎn)介
第1章 PL/SQL概念1
1.1 實(shí)驗(yàn)1:PL/SQL架構(gòu)1
1.1.1 PL/SQL架構(gòu)2
1.1.2 PL/SQL塊結(jié)構(gòu)4
1.1.3 PL/SQL是如何執(zhí)行的7
1.2 實(shí)驗(yàn)2:PL/SQL開(kāi)發(fā)環(huán)境7
1.2.1 初步掌握SQL Developer8
1.2.2 初步掌握SQL*Plus9
1.2.3 執(zhí)行PL/SQL腳本11
1.3 實(shí)驗(yàn)3:PL/SQL基礎(chǔ)知識(shí)14
1.3.1 DBMS_OUTPUT.PUT_LINE
語(yǔ)句14
1.3.2 替代變量的功能16
本章小結(jié)19
第2章 PL/SQL語(yǔ)言的基礎(chǔ)知識(shí)21
2.1 實(shí)驗(yàn)1:PL/SQL語(yǔ)言的各種組件21
2.1.1 PL/SQL變量22
2.1.2 PL/SQL保留字24
2.1.3 分隔符25
2.1.4 PL/SQL中的文字25
2.2 實(shí)驗(yàn)2:錨定數(shù)據(jù)類(lèi)型26
2.3 實(shí)驗(yàn)3:變量、塊、嵌套塊和
標(biāo)簽的作用域27
2.3.1 變量的作用域28
2.3.2 嵌套塊和標(biāo)簽28
本章小結(jié)30
第3章 PL/SQL中的SQL語(yǔ)句31
3.1 實(shí)驗(yàn)1:PL/SQL中的SQL語(yǔ)句31
3.1.1 使用SELECT INTO語(yǔ)句對(duì)
變量進(jìn)行初始化31
3.1.2 在PL/SQL塊中使用DML語(yǔ)句33
3.1.3 在PL/SQL塊中使用序列34
3.2 實(shí)驗(yàn)2:在PL/SQL中使用
事務(wù)控制語(yǔ)句35
3.2.1 COMMIT、ROLLBACK和
SAVEPOINT語(yǔ)句35
3.2.2 SET TRANSACTION語(yǔ)句38
本章小結(jié)39
第4章 條件控制:IF語(yǔ)句40
4.1 實(shí)驗(yàn)1:IF語(yǔ)句40
4.1.1 IF-THEN語(yǔ)句41
4.1.2 IF-THEN-ELSE語(yǔ)句42
4.2 實(shí)驗(yàn)2:ELSIF語(yǔ)句44
4.3 實(shí)驗(yàn)3:嵌套的IF語(yǔ)句48
本章小結(jié)50
第5章 條件控制:CASE語(yǔ)句52
5.1 實(shí)驗(yàn)1:CASE語(yǔ)句52
5.1.1 簡(jiǎn)單CASE語(yǔ)句52
5.1.2 搜索CASE語(yǔ)句54
5.2 實(shí)驗(yàn)2:CASE表達(dá)式59
5.3 實(shí)驗(yàn)3:NULLIF和COALESCE
函數(shù)63
5.3.1 NULLIF函數(shù)63
5.3.2 COALESCE函數(shù)64
本章小結(jié)67
第6章 迭代控制:第一部分68
6.1 實(shí)驗(yàn)1:簡(jiǎn)單循環(huán)68
6.1.1 EXIT語(yǔ)句69
6.1.2 EXIT WHEN語(yǔ)句72
6.2 實(shí)驗(yàn)2:WHILE循環(huán)73
6.2.1 使用WHILE循環(huán)73
6.2.2 提前終止WHILE循環(huán)76
6.3 實(shí)驗(yàn)3:數(shù)字型FOR循環(huán)78
6.3.1 在循環(huán)中使用IN選項(xiàng)79
6.3.2 在循環(huán)中使用REVERSE選項(xiàng)82
6.3.3 在循環(huán)中使用迭代控制選項(xiàng)82
6.3.4 提前終止數(shù)字型FOR循環(huán)86
本章小結(jié)87
第7章 迭代控制:第二部分88
7.1 實(shí)驗(yàn)1:CONTINUE語(yǔ)句88
7.1.1 使用CONTINUE語(yǔ)句88
7.1.2 使用CONTINUE WHEN語(yǔ)句91
7.2 實(shí)驗(yàn)2:嵌套循環(huán)94
7.2.1 使用嵌套循環(huán)94
7.2.2 使用循環(huán)標(biāo)簽95
本章小結(jié)97
第8章 錯(cuò)誤處理和內(nèi)置異常98
8.1 實(shí)驗(yàn)1:錯(cuò)誤處理98
8.2 實(shí)驗(yàn)2:內(nèi)置異常100
本章小結(jié)105
第9章 異常106
9.1 實(shí)驗(yàn)1:異常的作用域106
9.2 實(shí)驗(yàn)2:用戶(hù)定義的異常109
9.3 實(shí)驗(yàn)3:異常的傳播113
9.3.1 異常如何傳播113
9.3.2 重新觸發(fā)異常117
本章小結(jié)118
第10章 異常:高級(jí)概念119
10.1 實(shí)驗(yàn)1:RAISE_APPLICATION_
ERROR過(guò)程119
10.2 實(shí)驗(yàn)2:EXCEPTION_INIT指令122
10.3 實(shí)驗(yàn)3:SQLCODE和SQLERRM
函數(shù)124
本章小結(jié)126
第11章 游標(biāo)127
11.1 實(shí)驗(yàn)1:游標(biāo)的類(lèi)型127
11.1.1 隱式游標(biāo)128
11.1.2 顯式游標(biāo)130
11.2 實(shí)驗(yàn)2:基于表和基于游標(biāo)
的記錄136
11.2.1 基于表的記錄136
11.2.2 基于游標(biāo)的記錄138
11.3 實(shí)驗(yàn)3:游標(biāo)型FOR循環(huán)139
11.4 實(shí)驗(yàn)4:嵌套的游標(biāo)141
本章小結(jié)143
第12章 高級(jí)游標(biāo)144
12.1 實(shí)驗(yàn)1:參數(shù)化游標(biāo)144
12.2 實(shí)驗(yàn)2:游標(biāo)變量和游標(biāo)表達(dá)式149
12.2.1 游標(biāo)變量149
12.2.2 游標(biāo)表達(dá)式155
12.3 實(shí)驗(yàn)3:FOR UPDATE游標(biāo)157
本章小結(jié)160
第13章 觸發(fā)器161
13.1 實(shí)驗(yàn)1:什么是觸發(fā)器161
13.1.1 數(shù)據(jù)庫(kù)觸發(fā)器161
13.1.2 BEFORE觸發(fā)器164
13.1.3 AFTER觸發(fā)器168
13.1.4 自治事務(wù)169
13.2 實(shí)驗(yàn)2:觸發(fā)器的類(lèi)型171
13.2.1 行級(jí)觸發(fā)器和語(yǔ)句級(jí)觸發(fā)器171
13.2.2 INSTEAD OF觸發(fā)器172
本章小結(jié)176
第14章 變異表和組合觸發(fā)器177
14.1 實(shí)驗(yàn)1:變異表177
14.2 實(shí)驗(yàn)2:組合觸發(fā)器179
本章小結(jié)183
第15章 集合184
15.1 實(shí)驗(yàn)1:PL/SQL表184
15.1.1 關(guān)聯(lián)數(shù)組185
15.1.2 嵌套表187
15.1.3 集合方法190
15.2 實(shí)驗(yàn)2:變長(zhǎng)數(shù)組193
15.3 實(shí)驗(yàn)3:多維集合197
15.4 實(shí)驗(yàn)4:集合迭代控制和限定
表達(dá)式199
15.4.1 集合迭代控制199
15.4.2 限定表達(dá)式202
本章小結(jié)208
第16章 記錄209
16.1 實(shí)驗(yàn)1:用戶(hù)定義的記錄209
16.1.1 用戶(hù)定義的記錄209