資源描述:
《plsql程序設(shè)計(jì)(基礎(chǔ)篇)》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。
1、PL/SQL程序設(shè)計(jì)(上冊(cè))寫在前面之所以不怕麻煩把有關(guān)PL/SQL的知識(shí)寫下來(lái),一方面,是為了加深理解,便于以后隨時(shí)翻閱,另一方面,是因?yàn)樽约嚎磿偸遣荒軓念^看到尾,仔仔細(xì)細(xì),喜歡跳躍式閱讀,導(dǎo)致學(xué)習(xí)過(guò)程中,容易有遺漏。所以,將學(xué)習(xí)到的知識(shí)總結(jié)起來(lái),方便監(jiān)督自己,方便大家查閱。本文所記錄的內(nèi)容當(dāng)然不是本人憑經(jīng)驗(yàn)而寫,而是學(xué)習(xí)的筆記,參考的資料以《Oracle9iPLSQLFundamentals》和《Oracle9iDevelopPLSQLProgramUnits》為核心,其次,還包括《精通Oracle10gPLSQL編程》
2、和《OraclePLSQLBestPractices》等。由于是學(xué)習(xí)筆記么,說(shuō)是教程,其實(shí)是在吸引大家的注意,呵呵,主要是想在方便大家查閱和入門者入門外,希望大家多多指教,多多提出意見(jiàn),共同把這塊知識(shí)學(xué)熟、學(xué)通、學(xué)透。QuasarWei’sEmail:quasarbrave@gmail.comQuasarWei’sQQ:734089783QuasarWei’sRealName:WeiZhaozheofNEU50目錄PL/SQL程序設(shè)計(jì)(上冊(cè))1第一章認(rèn)識(shí)PL/SQL3第二章SQL回顧5第三章PL/SQL的基本結(jié)構(gòu)7第四章PL/
3、SQL的數(shù)據(jù)類型及使用10第五章流程控制29第六章游標(biāo)35第七章異常處理46第八章下冊(cè)預(yù)知4950第一章認(rèn)識(shí)PL/SQL這一章主要記錄了兩個(gè)問(wèn)題:1什么是PL/SQL?2PL/SQL有什么優(yōu)勢(shì)?下面從這兩個(gè)問(wèn)題展開論述。什么是PL/SQL?PL/SQL即procedurallanguage/standardquerylanguage,PL/SQL是具備程序設(shè)計(jì)語(yǔ)言特性(如:定義變量、流程控制、面向?qū)ο蟮龋┑?、關(guān)系數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)查詢語(yǔ)言SQL的過(guò)程性拓展(proceduralextension)。SQL是非過(guò)程語(yǔ)言,非過(guò)程,讓我理解
4、,就是不用你了解語(yǔ)句的處理過(guò)程,而直接達(dá)到開發(fā)者的目的。如:selectnamefromstudent這條語(yǔ)句,就是向數(shù)據(jù)庫(kù)說(shuō):“我要學(xué)生的姓名”,然后數(shù)據(jù)庫(kù)就會(huì)返回相應(yīng)的字段值而我們并不知道它是如何處理的也基本無(wú)法控制。而PL/SQL語(yǔ)言,則具備程序設(shè)計(jì)語(yǔ)言甚至高級(jí)程序設(shè)計(jì)語(yǔ)言的特點(diǎn),更好地滿足我們對(duì)數(shù)據(jù)的操作。PL/SQL有什么優(yōu)勢(shì)?PL/SQL的優(yōu)勢(shì)可以概括為以下五點(diǎn)(待補(bǔ)充):1具備程序設(shè)計(jì)語(yǔ)言的特性(模塊化、信息隱藏、面向?qū)ο蟮龋?異常處理,PL/SQL具備異常處理的機(jī)制;3可移植,想想Java吧,看看兩者有什么共
5、同之處?PL/SQL的JVM就是OracleServer,呵呵4改善性能,一方面,通過(guò)PL/SQL語(yǔ)句塊(Block)50可以一次性向OracleServer發(fā)送多個(gè)SQL語(yǔ)句,減少網(wǎng)絡(luò)的傳輸;另一方面,有些PL/SQL可以在客戶端執(zhí)行(前提是某些客戶端含有PL/SQL引擎),可以有效的減少與OracleServer的交互;再有,PL/SQL通常會(huì)存儲(chǔ)在Oracle數(shù)據(jù)庫(kù)中,這對(duì)于網(wǎng)絡(luò)程序來(lái)說(shuō)真是天降福音,因?yàn)?,這樣一系列的處理交互,都可以以一個(gè)調(diào)用數(shù)據(jù)庫(kù)本身存在的程序而完成,大大提高了性能。5可以與SQL交互,在PL/SQL
6、中可以嵌入SQL的DML、DQL、TCL(事務(wù)控制語(yǔ)言)語(yǔ)句。50第二章SQL回顧你都開始對(duì)PL/SQL感性趣了,那么SQL肯定是多多少少聽說(shuō)過(guò)的,呵呵,就回顧一些基礎(chǔ)吧,那些拓展的內(nèi)容,建議是遇見(jiàn)了再研究吧。DQL:源碼dql.sql:selectdname,max(sal)--5對(duì)列篩選(分組字段或聚集函數(shù))fromempleftouterjoindept--1確定表using(deptno)wheredeptno>0--2確定行(記錄)groupbydname--3將行分組havingmax(comm)isnullorm
7、ax(comm)>0--4對(duì)組篩選orderbydname--6對(duì)結(jié)果集排序如上的源碼表示了SQL語(yǔ)句的執(zhí)行順序,這個(gè)一定要理解好??!思考題:?jiǎn)栴}:為什么帶有g(shù)roupby的select和having只能含有分組字段和聚集函數(shù)呢?答:因?yàn)間roupby分組后,只能對(duì)組進(jìn)行操作了。也就是說(shuō),無(wú)論你是篩選行having還是列select,都要以組為單位進(jìn)行,所以只能使用組共有的屬性,除了分組字段外,只有像什么每組的最大值啊、最小值啊、平均值啊等等這些組的特性或叫組員共有的特性。50所以在使用時(shí)一定注意,帶有g(shù)roupby后,hav
8、ing和select中只能有-分組字段和聚集函數(shù)DML:insertintovalues就不再重復(fù)了,不過(guò)聽說(shuō)現(xiàn)在可以一次性向多個(gè)表中插入呢,使用insertintoall和insertintofirst,具體用法如下:insertintoall/firstwhen條件the