數(shù)據(jù)庫技術(shù)及應(yīng)用:第7章 Oracle存儲(chǔ)過程和函數(shù)_第1頁
數(shù)據(jù)庫技術(shù)及應(yīng)用:第7章 Oracle存儲(chǔ)過程和函數(shù)_第2頁
數(shù)據(jù)庫技術(shù)及應(yīng)用:第7章 Oracle存儲(chǔ)過程和函數(shù)_第3頁
數(shù)據(jù)庫技術(shù)及應(yīng)用:第7章 Oracle存儲(chǔ)過程和函數(shù)_第4頁
數(shù)據(jù)庫技術(shù)及應(yīng)用:第7章 Oracle存儲(chǔ)過程和函數(shù)_第5頁
已閱讀5頁,還剩13頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

Oracle存儲(chǔ)過程和函數(shù)第七章預(yù)習(xí)檢查存儲(chǔ)過程如何定義函數(shù)如何定義本章目標(biāo)掌握存儲(chǔ)過程掌握函數(shù)子程序子程序是一個(gè)命名的PL/SQL塊,可以帶參數(shù)也可以不帶參數(shù),可以被調(diào)用,包含兩種:存儲(chǔ)過程和函數(shù)優(yōu)點(diǎn):模塊化可重用性可維護(hù)性安全性存儲(chǔ)過程為了執(zhí)行一定的任務(wù)而組合在一起的SQL或者PL/SQL語句集創(chuàng)建--創(chuàng)建簡(jiǎn)單無參數(shù)存儲(chǔ)過程createorreplaceprocedureaddStuWuCan

參數(shù)名參數(shù)類型in|out|inoutis|asbegin

代碼塊

異常處理end;調(diào)用存儲(chǔ)過程命令行:setserveroutputon;execute|exec

存儲(chǔ)過程名plsql中begin存儲(chǔ)過程名end;刪除存儲(chǔ)過程dropprocedure存儲(chǔ)過程名

注意事項(xiàng):存儲(chǔ)過程參數(shù)不帶取值范圍,in表示傳入,out表示輸出類型可以使用任意Oracle中的合法類型。變量帶取值范圍,后面接分號(hào)在判斷語句前最好先用count(*)函數(shù)判斷是否存在該條操作記錄用select

。。。into。。。給變量賦值在代碼中拋異常用

raise+異常名不帶參數(shù)的存儲(chǔ)過程--創(chuàng)建簡(jiǎn)單無參數(shù)存儲(chǔ)過程createorreplaceprocedureaddStuWuCanisbegininsertintogradevalues(seq_grade.nextval,'無參數(shù)測(cè)試');end;

/--調(diào)用執(zhí)行/*setserveroutputon;execaddStuWuCan;*/--命令行調(diào)用方式和sqlserver相同beginaddStuWuCan;--直接調(diào)用end;帶參數(shù)的存儲(chǔ)過程--創(chuàng)建帶輸入?yún)?shù)存儲(chǔ)過程createorreplaceprocedureaddstudaishurucanshu(snamevarchar2)isbegininsertintogradevalues(seq_grade.nextval,sname);end;

declaresnamevarchar2(50):='&sname1';beginaddstudaishurucanshu(sname);end;帶默認(rèn)值參數(shù)的存儲(chǔ)過程--創(chuàng)建帶輸入?yún)?shù)存儲(chǔ)過程---默認(rèn)值createorreplaceprocedureaddstudaishurucanshumorenzhi(snamevarchar2default'默認(rèn)值')isbegininsertintogradevalues(seq_grade.nextval,sname);--使用參數(shù)不用加單引號(hào)end;

begin

addstudaishurucanshumorenzhi();--不需要聲明變量,直接空著就會(huì)使用默認(rèn)值如果傳入?yún)?shù),會(huì)覆蓋默認(rèn)值end;默認(rèn)值參數(shù)被覆蓋的存儲(chǔ)過程--創(chuàng)建帶輸入?yún)?shù)存儲(chǔ)過程---默認(rèn)值被覆蓋的情況createorreplaceprocedureaddstudaishurucanshumorenzhi1(snamevarchar2default'默認(rèn)值')isbegininsertintogradevalues(seq_grade.nextval,sname);end;

declaresnamevarchar2(50):='&sname1';beginaddstudaishurucanshumorenzhi1(sname);--如果傳入?yún)?shù),會(huì)覆蓋默認(rèn)值end;解決參數(shù)對(duì)應(yīng)的存儲(chǔ)過程--創(chuàng)建帶輸入?yún)?shù)存儲(chǔ)過程---同時(shí)存在多個(gè)參數(shù)的時(shí)候,而且是有默認(rèn)值和無默認(rèn)值的混合起來,需要通過名字對(duì)應(yīng)方式解決,位置就可以不一致了createorreplaceprocedureaddstuduiying(snamexingcanvarchar2default'默認(rèn)值')isbegininsertintogradevalues(seq_grade.nextval,snamexingcan);end;

declaresnamevarchar2(50):='&sname1';beginaddstuduiying(snamexingcan=>sname);--如果傳入?yún)?shù),會(huì)覆蓋默認(rèn)值end;帶輸出參數(shù)的存儲(chǔ)過程

--創(chuàng)建帶輸出參數(shù)存儲(chǔ)過程createorreplaceprocedureaddstudaishuchucanshu(gidoutnumber,snamevarchar2)isbegininsertintogradevalues(seq_grade.nextval,sname);selectmax(gradeid)intogidfromgrade;dbms_output.put_line('編號(hào)是:'||gid);end;

declaresnamevarchar2(50):='&sname1';gradeidnumber(6);beginaddstudaishuchucanshu(gradeid,sname);dbms_output.put_line('編號(hào)是:'||gradeid);end;

帶輸入輸出參數(shù)的存儲(chǔ)過程

--創(chuàng)建帶輸入輸出參數(shù)存儲(chǔ)過程createorreplaceprocedureaddstudaishurushuchucanshu(snameinoutvarchar2)isbegininsertintogradevalues(seq_grade.nextval,sname);sname:='修改以后的值';end;

declaresnamevarchar2(50):='&sname1';beginaddstudaishurushuchucanshu(sname);--調(diào)用時(shí)順序保存一致,不用寫出out關(guān)鍵字,但是sqlserver需要寫出來dbms_output.put_line('編號(hào)是:'||sname);end;函數(shù)的創(chuàng)建--創(chuàng)建函數(shù)createorreplacefunctionaddhanshureturnnumberisgidgrade.gradeid%TYPE;begin

--declareidsnumber(6);--不能出現(xiàn)定義selectmax(gradeid)intogidfromgrade;returngid;end;--調(diào)用declaregidnumber(6);begingid:=addhanshu();dbms_output.put_line('編號(hào)是:'||gid);end;函數(shù)的刪除dropfunction函數(shù)名;函數(shù)和存儲(chǔ)過程區(qū)別返回值的區(qū)別

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論