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