oracle 存儲(chǔ)過(guò)程及游標(biāo)

oracle 存儲(chǔ)過(guò)程及游標(biāo)

ID:20625160

大?。?7.00 KB

頁(yè)數(shù):5頁(yè)

時(shí)間:2018-10-14

oracle 存儲(chǔ)過(guò)程及游標(biāo)_第1頁(yè)
oracle 存儲(chǔ)過(guò)程及游標(biāo)_第2頁(yè)
oracle 存儲(chǔ)過(guò)程及游標(biāo)_第3頁(yè)
oracle 存儲(chǔ)過(guò)程及游標(biāo)_第4頁(yè)
oracle 存儲(chǔ)過(guò)程及游標(biāo)_第5頁(yè)
資源描述:

《oracle 存儲(chǔ)過(guò)程及游標(biāo)》由會(huì)員上傳分享,免費(fèi)在線(xiàn)閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫(kù)。

1、Oracle的存儲(chǔ)過(guò)程及游標(biāo)Oracle中的存儲(chǔ)過(guò)程和游標(biāo):selectmyFunc(參數(shù)1,參數(shù)2..)todual;--可以執(zhí)行一些業(yè)務(wù)邏輯一:Oracle中的函數(shù)與存儲(chǔ)過(guò)程的區(qū)別:A:函數(shù)必須有返回值,而過(guò)程沒(méi)有.B:函數(shù)可以單獨(dú)執(zhí)行.而過(guò)程必須通過(guò)execute執(zhí)行.C:函數(shù)可以嵌入到SQL語(yǔ)句中執(zhí)行.而過(guò)程不行.其實(shí)我們可以將比較復(fù)雜的查詢(xún)寫(xiě)成函數(shù).然后到存儲(chǔ)過(guò)程中去調(diào)用這些函數(shù).二:如何創(chuàng)建存儲(chǔ)過(guò)程:A:格式createorreplaceprocedure[(參數(shù)名參數(shù)類(lèi)型以及描述,....)]---注意,沒(méi)有

2、返回值is[變量聲明]begin[過(guò)程處理];----------null;exceptionwhen異常名thenend;注意:參數(shù)中默認(rèn)是按值傳遞.是in方式.也可以是out和inout方式.這些特點(diǎn)和函數(shù)一樣.B:舉例1:createorreplaceproceduremyPro----createorreplaceprocmyPro出錯(cuò)不能簡(jiǎn)寫(xiě)(ainint:=0,binint:=0)iscint:=0;beginc:=a+b;dbms_output.put_line('Cisvalue'

3、

4、c);end;執(zhí)行:executemyPro(10,2

5、0);---在SqlServer中.執(zhí)行存儲(chǔ)過(guò)程是不需要括弧的.注意分號(hào)不要調(diào)了.execmyPro(10,20);--可以簡(jiǎn)寫(xiě)C:舉例2:如果在一個(gè)函數(shù)里面包含Select語(yǔ)句的話(huà),那么該Select語(yǔ)句必須有into,過(guò)程同樣也需要.createorreplaceproceduremyPro1(aint:=0,bint:=0)iscint:=0;beginselectempno+a+bintocfromempwhereename='FORD';dbms_output.put_line('Cisvalues'

6、

7、c);end;執(zhí)行:executemyP

8、ro1(10,20)D:假如在一個(gè)過(guò)程里面要返回一個(gè)結(jié)果集,怎么辦?大家注意.就必須要用到游標(biāo)了!用游標(biāo)來(lái)處理這個(gè)結(jié)果集.createorreplaceprocedureTest(varEmpNameemp.ename%type)isbegin------會(huì)報(bào)錯(cuò).錯(cuò)誤原因沒(méi)有into子句.select*fromempwhereenamelike'%'

9、

10、varEmpName

11、

12、'%';end;這個(gè)程序我們無(wú)法用into,因?yàn)樵贠racle里面沒(méi)有一個(gè)類(lèi)型去接受一個(gè)結(jié)果集.這個(gè)時(shí)候我們可以聲明游標(biāo)對(duì)象去接受他.PL/SQL游標(biāo):A:分類(lèi):1:隱式游標(biāo):非用

13、戶(hù)明確聲明而產(chǎn)生的游標(biāo).你根本看不到cursor這個(gè)關(guān)鍵字.2:顯示游標(biāo):用戶(hù)明確通過(guò)cursor關(guān)鍵字來(lái)聲明的游標(biāo).B:什么是隱式游標(biāo):1:什么時(shí)候產(chǎn)生:會(huì)在執(zhí)行任何合法的SQL語(yǔ)句(DML---INSERTUPDATEDELETEDQL-----SELECT)中產(chǎn)生.他不一定存放數(shù)據(jù).也有可能存放記錄集所影響的行數(shù).如果執(zhí)行SELECT語(yǔ)句,這個(gè)時(shí)候游標(biāo)會(huì)存放數(shù)據(jù).如果執(zhí)行INSERTUPDATEDELETE會(huì)存放記錄影響的行數(shù).C:隱式游標(biāo)叫什么名字:名字叫sql關(guān)于sql的游標(biāo)變量到底有哪些呢?作用:返回最近一次執(zhí)行SQL語(yǔ)句所涉及的游標(biāo)相關(guān)信息

14、.因?yàn)槊繄?zhí)行一次SQL語(yǔ)句,都會(huì)產(chǎn)生一個(gè)隱式游標(biāo).那么當(dāng)前執(zhí)行的SQL語(yǔ)句就是當(dāng)前的隱式游標(biāo).sql%foundsql%notfoundsql%rowcountsql%isopenD:關(guān)于隱式游標(biāo)的例子:createtable學(xué)生基本信息表(StuIDint,StuNamevarchar2(20))altertable學(xué)生基本信息表addconstraintPK_STUIDprimarykey(StuID)declarenumint:=0;beginnum:=#deletefrom學(xué)生基本信息表whereStuID=num;ifsql%notfo

15、undthendbms_output.put_line('該行數(shù)據(jù)沒(méi)有發(fā)現(xiàn)');elsedbms_output.put_line('數(shù)據(jù)被發(fā)現(xiàn)并刪除,影響的行數(shù)為:'

16、

17、sql%rowcount);endif;end;E:關(guān)于顯示游標(biāo)的例子:1:如何定義顯示游標(biāo)declarecursoris[select語(yǔ)句];declarecursormycurisselectempno,ename,jobfromscott.emp;2:如何打開(kāi)游標(biāo):open;openmycur;3:如何通過(guò)游標(biāo)來(lái)讀取數(shù)據(jù)fetch

18、into4:如何關(guān)閉游標(biāo)

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫(huà)的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無(wú)此問(wèn)題,請(qǐng)放心下載。
2. 本文檔由用戶(hù)上傳,版權(quán)歸屬用戶(hù),天天文庫(kù)負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭(zhēng)議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無(wú)法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶(hù)請(qǐng)聯(lián)系客服處理。