版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
oracle第5講1.pl/sql的介紹2.pl/sql的基礎(chǔ)主講李珩oracle數(shù)據(jù)庫pl/sql的介紹■pl/sql是什么pl/sql(procedurallanguage/sql)是oracle在標(biāo)準(zhǔn)的sql語言上的擴(kuò)展.pl/sql不僅允許嵌入sql語言,還可以定義變量和常量,允許使用條件語句和循環(huán)語句,允許使用例外處理各種錯誤,這樣使得它的功能變得更加強(qiáng)大?!鰧W(xué)習(xí)必要性[圖]①提高應(yīng)用程序的運(yùn)行性能②模塊化的設(shè)計思想[分頁的過程,訂單的過程,轉(zhuǎn)賬的過程..]③減少網(wǎng)絡(luò)傳輸量④提高安全性■缺點(diǎn)移植性不好.
主講李珩oracle數(shù)據(jù)庫pl/sql的介紹—用什么開發(fā)pl/sql■
sqlplus開發(fā)工具sqlplus是oracle公司提供的一個工具,這個因為我們在以前介紹過的:舉一個簡單案例:編寫一個存儲過程,該過程可以向某表中添加記錄.■
pl/sqldeveloper開發(fā)工具pl/sqldeveloper是用于開發(fā)pl/sql塊的集成開發(fā)環(huán)境(ide),他是一個獨(dú)立的產(chǎn)品,而不是oracle的一個附帶品。舉一個簡單案例:編寫一個存儲過程,該過程可以刪除某表記錄.主講李珩oracle數(shù)據(jù)庫創(chuàng)建過程基本語法:createprocedure過程名(參數(shù)1…)isbegin執(zhí)行語句;end;/執(zhí)行過程語法:exec
過程名(傳入?yún)?shù)…)pl/sql基礎(chǔ)知識—介紹■
介紹開發(fā)人員使用pl/sql編寫應(yīng)用模塊時,不僅需要掌握sql語句的編寫方法,還要掌握pl/sql語句及語法規(guī)則。pl/sql編程可以使用變量和邏輯控制語句,從而可以編寫非常有用的功能模塊。比如:分頁存儲過程模塊、訂單處理存儲過程模塊、轉(zhuǎn)賬存儲過程模塊..而且如果使用pl/sql編程,我們可以輕松的完成非常復(fù)雜的查詢要求.等學(xué)習(xí)了pl/sql編程基礎(chǔ)再講吧主講李珩oracle數(shù)據(jù)庫pl/sql基礎(chǔ)知識—pl/sql可以做什么■
簡單分類
|-----過程(存儲過程) | |-----函數(shù) 塊(編程)-------| |-----觸發(fā)器
| |-----包分分類吧主講李珩oracle數(shù)據(jù)庫pl/sql基礎(chǔ)知識—編寫規(guī)范■
編寫規(guī)范①注釋單行注釋--多行注釋/*....*/來劃分②標(biāo)識符號的命名規(guī)范1)當(dāng)定義變量時,建議用v_作為前綴v_sal2)當(dāng)定義常量時,建議用c_作為前綴c_rate3)當(dāng)定義游標(biāo)時,建議用_cursor作為后綴emp_cursor;4)當(dāng)定義例外時,建議用e_作為前綴e_error
主講李珩oracle數(shù)據(jù)庫pl/sql基礎(chǔ)知識—pl/sql塊介紹■
介紹塊(block)是pl/sql的基本程序單元,編寫pl/sql程序?qū)嶋H上就是編寫pl/sql塊。要完成相對簡單的應(yīng)用功能,可能只需要編寫一個pl/sql塊;但是如果要想實現(xiàn)復(fù)雜的功能,可能需要在一個pl/sql塊中嵌套其它的pl/sql塊.
主講李珩oracle數(shù)據(jù)庫pl/sql基礎(chǔ)知識—pl/sql塊結(jié)構(gòu)■
塊結(jié)構(gòu)示意圖pl/sql塊由三個部分構(gòu)成:定義部分、執(zhí)行部分、例外處理部分.如下所示:declare/*定義部分-----定義常量、變量、游標(biāo)、例外、復(fù)雜數(shù)據(jù)類型*/begin/*執(zhí)行部分-----要執(zhí)行的pl/sql語句和sql語句*/exception/*例外處理部分----處理運(yùn)行的各種錯誤*/end;★可以和java編程結(jié)構(gòu)做一個簡單的比較 定義部分是從declare開始的,該部分是可選的。執(zhí)行部分是從begin開始的,該部分是必須的。例外處理部分是從exception開始的,該部分是可選的主講李珩oracle數(shù)據(jù)庫pl/sql基礎(chǔ)知識—pl/sql實例■
實例1-只包括執(zhí)行部分的pl/sql塊?相關(guān)說明:dbms_output是oracle所提供的包(類似java的開發(fā)包),該包包含一些過程,put_line就是dbms_output包的一個過程。
案例:輸出hello,world主講李珩oracle數(shù)據(jù)庫pl/sql基礎(chǔ)知識—pl/sql實例■
實例2-包含定義部分和執(zhí)行部分的pl/sql塊?相關(guān)說明:&表示要接收從控制臺輸入的變量||表示把兩個串拼接案例:根據(jù)用戶輸入的雇員編號,顯示該雇員的名字主講李珩oracle數(shù)據(jù)庫pl/sql基礎(chǔ)知知識—pl/sql實例■實例3-包含定義部部分、執(zhí)行行部分和例例外處理部部分為了避免pl/sql程序的運(yùn)行行錯誤,提提高pl/sql的健壯性,,應(yīng)該對可可能的錯誤進(jìn)行行處理,這個很有必必要:①比如在實實例2中,如果輸輸入了不存存在的雇員員號,應(yīng)當(dāng)當(dāng)做例外處處理.②有時出現(xiàn)異異常,希望望用另外的的邏輯處理理,[網(wǎng)示]比如,如果果不存在就就加入編號號為1,名字為’馬大哈’這么一個人人.我們看看如如何完成①①的要求相關(guān)說明:oracle事先預(yù)定義義了一些例例外,no_data_found就是找不到到數(shù)據(jù)的例例外.主講李珩珩oracle數(shù)據(jù)庫pl/sql基礎(chǔ)知知識—過程程快速入門■過程過程用于執(zhí)執(zhí)行特定的的操作.當(dāng)建立過程程時,既可可以指定輸輸入?yún)?shù)(in),也可以指定定輸出參數(shù)數(shù)(out).通過在過程程中使用輸輸入?yún)?shù),,可以將數(shù)數(shù)據(jù)傳遞到到執(zhí)行部分分;通過使使用輸出參參數(shù),可以以將執(zhí)行部部分的數(shù)據(jù)據(jù)傳遞到應(yīng)應(yīng)用環(huán)境.在sqlplus中可以使用用createprocedure命令來建立立過程。實例如下:①請考慮編寫寫一個過程程,可以輸輸入雇員名名,新工資可可修改雇員員的工資②如何調(diào)用用過程有兩兩種方法:exec過程名(參數(shù)值..)call過程名(參數(shù)值..)createprocedure過程名(變量in變量類型…,變量out變量類型…)is定義變量begin執(zhí)行語句;end;主講李珩珩oracle數(shù)據(jù)庫pl/sql基礎(chǔ)知識——過程快速入門■java中調(diào)用過程③如何在java程序中調(diào)用一一個存儲過程程課堂小練習(xí)::編寫一個過過程,可以接接受id和薪水,更新新薪水,如果果id不存在,需要要在exception中捕獲,并給給出提示!需要在控制臺臺,和java程序中都調(diào)用用?如何使用過程程返回值。特別說明:對于過程我們們會在以后給給大家詳細(xì)具具體的介紹,,現(xiàn)在請大家家先有一個概概念.主講李珩珩oracle數(shù)據(jù)庫動手體驗:我我們寫一個java程序來調(diào)用前前面的存儲過過程pl/sql基礎(chǔ)知識——函數(shù)快速入門■函數(shù)函數(shù)用于返回回特定的數(shù)據(jù)據(jù),當(dāng)建立函數(shù)時時,在函數(shù)頭頭部必須包含含return子句,而在函函數(shù)體內(nèi)必須須包含return語句返回的數(shù)數(shù)據(jù)。我們可可以使用createfunction來建立函數(shù),實際案例:在sqlplus中調(diào)用函數(shù)同樣我們可以以在java程序中調(diào)用該該函數(shù)selectannual_income('SCOTT')fromdual;//這樣可以通過rs.getInt(1)得到返回的結(jié)結(jié)果主講李珩珩oracle數(shù)據(jù)庫案例:請編寫寫一個函數(shù),,可以接收用用戶名并返回回該用戶的年年薪.createfunction函數(shù)名(參數(shù)1…)return數(shù)據(jù)類型is定義變量;begin執(zhí)行語句;end;var變量名變量量類型call函數(shù)名(參數(shù)值…)into:變量名;print變量名pl/sql基礎(chǔ)知識——包■包包用于在邏輯輯上組合過程程和函數(shù),它由包規(guī)范和和包體兩部分分組成。①我們可以使使用createpackage命令來創(chuàng)建包包:實例:create[orreplace]package包名isprocedure過程名(變量名變量量類型…);function函數(shù)名(變量名變量量類型…)return數(shù)據(jù)類型;end;包的規(guī)范只包包含了過程和和函數(shù)的說明明,但是沒有有過程和函數(shù)數(shù)的實現(xiàn)代碼。包體用于于實現(xiàn)包規(guī)范范中的過程和和函數(shù),主講李珩珩oracle數(shù)據(jù)庫請編寫一個包包,該包有一一個過程,該該過程可以接接收用戶名和和新的薪水,,(將來用于通通過用戶名去去更新薪水))還有一個函函數(shù),該函數(shù)數(shù)可以接收一一個用戶名((將來要實現(xiàn)現(xiàn)得到該用戶戶的年薪是多多少)pl/sql基礎(chǔ)知識——包②建立包體可以以使用createpackagebody命令createorreplacepackagebody包名isprocedure過程名(變量名變量量類型…)isbegin執(zhí)行語句;end;function函數(shù)名(變量名變量量類型…)return數(shù)據(jù)類型is定義變量;begin執(zhí)行語句;end;end;主講李珩珩oracle數(shù)據(jù)庫案例:請實現(xiàn)現(xiàn)前面定義的的包中的過程程和函數(shù)pl/sql基礎(chǔ)知識——包③如何調(diào)用包的的過程或是函函數(shù)當(dāng)調(diào)用包的過過程或是函數(shù)數(shù)時,在過程程和函數(shù)前需需要帶有包名名,如果要訪問其它方案案的包,還需需要在包名前前加方案名.如:特別說明:包是pl/sql中非常重要的的部分,我們們在使用過程程分頁時,將將會再次體驗驗它的威力。主講李珩珩oracle數(shù)據(jù)庫exec方案名.包名.過程名(參數(shù)值..);call方案名.包名.過程名(參數(shù)值…);測試前面包中中的函數(shù)和過過程名是否正正確調(diào)用!pl/sql基礎(chǔ)知識——觸發(fā)器■觸發(fā)器簡單介介紹觸發(fā)器是指隱隱含的執(zhí)行的的存儲過程。當(dāng)定義觸發(fā)發(fā)器時,必須須要指定觸發(fā)發(fā)的事件和觸觸發(fā)的操作,,常用的觸發(fā)發(fā)事件包括insert,update,delete語句,,而觸觸發(fā)操操作實實際就就是一一個pl/sql塊??煽梢允故褂胏reatetrigger來建立立觸發(fā)發(fā)器。。特別說說明:我們會會在后面詳詳細(xì)為大家家介紹紹觸發(fā)發(fā)器的的使用用,因因為觸觸發(fā)器器是非非常有有用的的,可維護(hù)護(hù)數(shù)據(jù)據(jù)庫的的安全全和一一致性性。主講李李珩珩oracle數(shù)據(jù)庫庫pl/sql基基礎(chǔ)知知識——定義義并使使用變變量■介紹在編寫寫pl/sql程序時時,可可以定定義變變量和和常量量;在在pl/sql程序中中包括有有:①標(biāo)量類類型(scalar)②復(fù)合類類型(composite)③參照類類型(reference)④lob(largeobject)主講李李珩珩oracle數(shù)據(jù)庫庫pl/sql基基礎(chǔ)知知識——定義義并使使用變變量■標(biāo)量(scalar)-常用類類型在編編寫寫pl/sql塊時時,如果果要要使使用用變變量量,需在在定定義義部部分分定定義義變變量量。。pl/sql中定定義義變變量量和和常常量量的的語語法法如如下下:identifier[constant]datatype[notnull][:=|defaultexpr]identifier:名稱稱constant:指定定常常量量.需要要指指定定它它的的初初始始植植,且其其值值是是不不能能改改變變的的datatype:數(shù)據(jù)據(jù)類類型型notnull:指定定變變量量值值不不能能為為null:=給變變量量或或是是常常量量指指定定初初始始植植default用于于指指定定初初始始植植expr:指定定初初始始植植的的pl/sql表達(dá)達(dá)式式,可是是文文本本值值、、其其它它變變量量、、函函數(shù)數(shù)等等舉例例說說明明吧吧主講講李李珩珩oracle數(shù)據(jù)據(jù)庫庫pl/sql基基礎(chǔ)礎(chǔ)知知識識——定定義義并并使使用用變變量量■標(biāo)量量定定義義的的案案例例①定義一個個變長字符符串v_enamevarchar2(10);②定義一個小小數(shù)范圍圍-9999.99~9999.99v_sal number(6,2);③定義一個小小數(shù)并給一一個初始植植為5.4:=是pl/sql的賦值號v_sal2 number(6,2):=5.4④定義一個日日期類型的的數(shù)據(jù)v_hiredate date;⑥定義一個布布爾變量,,不能為空空,初始植植為falsev_validbooleannotnulldefaultfalse;主講李珩珩oracle數(shù)據(jù)庫pl/sql基礎(chǔ)知知識—定義義并使用變變量■標(biāo)量(scalar)-使用標(biāo)量在定義好變變量后,就就可以使用用這些變量量。這里需需要說明的的是pl/sql塊為變量賦賦值不同于于其它的編編程語言,,需要在等等號前加冒冒號(:=)案例:以輸輸入員工號號,顯示雇雇員姓名、、工資、個人所得稅稅(稅率為0.03)為例。說明明變量的使使用,看看如何編編寫.主講李珩珩oracle數(shù)據(jù)庫pl/sql基礎(chǔ)知知識—定義義并使用變變量■標(biāo)量(scalar)-使用%type類型對于上面的的pl/sql塊有一個問問題:就是如果員員工的姓名名超過了5字符的話,,就會有錯錯誤,為了了降低pl/sql程序的維護(hù)護(hù)工作量,,可以使用%type屬性定義變變量,這樣樣它會按照照數(shù)據(jù)庫列列來確定你你定義的變變量的類型型和長度,我們看看這這個怎么使使用:標(biāo)識符名表表名.列名%type;主講李珩珩oracle數(shù)據(jù)庫pl/sql基礎(chǔ)知知識—定義義并使用變變量■復(fù)合變量(composite)-介紹用于存放多多個值的變變量。常用用的包括這這:①pl/sql記錄②pl/sql表主講李珩珩oracle數(shù)據(jù)庫pl/sql基礎(chǔ)知識——定義并使用用變量■復(fù)合類型-pl/sql記錄類似與高級語語言中的結(jié)構(gòu)構(gòu)體,需要注意的的是,當(dāng)引用用pl/sql記錄成員員時,必須要要加記錄變量量作為前綴(記錄變量.記錄成員)如下:主講李珩珩oracle數(shù)據(jù)庫請編寫一個過過程,該過程程可以接收一一個用戶編號號,并顯示該該用戶的名字字,薪水,工工作崗位(注意:要求求用pl/sql記錄實現(xiàn))type自定義的pl/sql記錄名isrecord(變量名變量量類型,變量名變量量類型,);//使用自定義的的pl/sql記錄變量名自定定義的pl/sql記錄名;pl/sql基礎(chǔ)知識——定義并使用用變量■復(fù)合類型-pl/sql表(了解即可)相當(dāng)于高級語語言中的數(shù)組組.但是是需要要注意意的是是在高高級語語言中中數(shù)組組的下下標(biāo)不不能為為負(fù)數(shù)數(shù),而而pl/sql是可可以為為負(fù)數(shù)數(shù)的,并且且表元元素的的下標(biāo)標(biāo)沒有有限制制.實實例如如下declaretypeaa_table_typeistableofemp.ename%typeindexbybinary_integer;aa_tableaa_table_type;--定義一一個變變量:aa_table:類型beginselectenameintoaa_table(-1)fromempwhereempno=7788;dbms_output.put_line('員員工名名:'||aa_table(-1));end;說明::aa_table_type是是pl/sql表類類型emp.ename%type指指定了了表的的元素素的類類型和和長度度aa_table為為pl/sql表表變量量aa_table(0)則表表示下下標(biāo)為為0的的元素素主講李李珩珩oracle數(shù)據(jù)庫
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 政府采購合同(2篇)
- 搭建車棚安全協(xié)議書(2篇)
- 2024年度有機(jī)蔬菜種植基地委托培育種苗專項合同3篇
- 2024年甲乙雙方關(guān)于共建綠色能源發(fā)電項目的合作協(xié)議
- 2025年洛陽大車貨運(yùn)資格證考試題
- 2025年濟(jì)寧資格證模擬考試
- 2025年賀州怎么考貨運(yùn)從業(yè)資格證
- 2025年涼山州b2貨運(yùn)資格證模擬考試
- 2024年標(biāo)準(zhǔn)化消防系統(tǒng)工程勞務(wù)分包合同一
- 《酒店笑話》課件
- 灌注樁樁基工程樁頭破除、缺陷修補(bǔ)、接樁施工方案
- 蘇教版科學(xué)四年級上全冊單元達(dá)標(biāo)測試卷(一)附答案
- 《建筑藝術(shù)賞析》課程標(biāo)準(zhǔn)
- 生物化學(xué)研究進(jìn)展概述
- 環(huán)境影響評價報告模板
- 《UI設(shè)計》課件-1.4 UI設(shè)計的原則
- 勞動:學(xué)做中醫(yī)藥香囊(教案)五年級上冊綜合實踐活動勞動課程通用版
- 腹腔鏡下腎切除術(shù)手術(shù)配合-課件
- 國開電大本科《人文英語4》機(jī)考真題(第十二套)
- 超聲波清洗機(jī)驗證方案
- 《孫子兵法》與執(zhí)政藝術(shù)學(xué)習(xí)通超星課后章節(jié)答案期末考試題庫2023年
評論
0/150
提交評論