oracle創(chuàng)建函數(shù)和過(guò)程

oracle創(chuàng)建函數(shù)和過(guò)程

ID:17622494

大?。?8.36 KB

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

時(shí)間:2018-09-03

oracle創(chuàng)建函數(shù)和過(guò)程_第1頁(yè)
oracle創(chuàng)建函數(shù)和過(guò)程_第2頁(yè)
oracle創(chuàng)建函數(shù)和過(guò)程_第3頁(yè)
oracle創(chuàng)建函數(shù)和過(guò)程_第4頁(yè)
oracle創(chuàng)建函數(shù)和過(guò)程_第5頁(yè)
資源描述:

《oracle創(chuàng)建函數(shù)和過(guò)程》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫(kù)。

1、ORACLEPL/SQL編程之六:把過(guò)程與函數(shù)說(shuō)透(窮追猛打,把根兒都拔起!)?繼上篇:ORACLEPL/SQL編程之八:把觸發(fā)器說(shuō)透得到了大家的強(qiáng)力支持,感謝。接下來(lái)再下猛藥,介紹下一篇,大家一定要支持與推薦呀~!我也才有動(dòng)力寫(xiě)后面的。?本篇主要內(nèi)容如下:6.1?引言6.2?創(chuàng)建函數(shù)6.3?存儲(chǔ)過(guò)程6.3.1?創(chuàng)建過(guò)程6.3.2?調(diào)用存儲(chǔ)過(guò)程6.3.3?AUTHID6.3.4?PRAGMAAUTONOMOUS_TRANSACTION6.3.5?開(kāi)發(fā)存儲(chǔ)過(guò)程步驟6.3.6?刪除過(guò)程和函數(shù)6.3.7?過(guò)程與函數(shù)的比

2、較?6.1?引言過(guò)程與函數(shù)(另外還有包與觸發(fā)器)是命名的PL/SQL塊(也是用戶的方案對(duì)象),被編譯后存儲(chǔ)在數(shù)據(jù)庫(kù)中,以備執(zhí)行。因此,其它PL/SQL塊可以按名稱來(lái)使用他們。所以,可以將商業(yè)邏輯、企業(yè)規(guī)則寫(xiě)成函數(shù)或過(guò)程保存到數(shù)據(jù)庫(kù)中,以便共享。過(guò)程和函數(shù)統(tǒng)稱為PL/SQL子程序,他們是被命名的PL/SQL塊,均存儲(chǔ)在數(shù)據(jù)庫(kù)中,并通過(guò)輸入、輸出參數(shù)或輸入/輸出參數(shù)與其調(diào)用者交換信息。過(guò)程和函數(shù)的唯一區(qū)別是函數(shù)總向調(diào)用者返回?cái)?shù)據(jù),而過(guò)程則不返回?cái)?shù)據(jù)。在本節(jié)中,主要介紹:1.??創(chuàng)建存儲(chǔ)過(guò)程和函數(shù)。2.??正確使用系統(tǒng)

3、級(jí)的異常處理和用戶定義的異常處理。3.??建立和管理存儲(chǔ)過(guò)程和函數(shù)。6.2?創(chuàng)建函數(shù)1.創(chuàng)建函數(shù)?語(yǔ)法如下:?CREATE?[OR?REPLACE]?FUNCTION?function_name?(arg1?[?{?IN?

4、?OUT?

5、?IN?OUT?}]?type1?[DEFAULT?value1],?[arg2?[?{?IN?

6、?OUT?

7、?IN?OUT?}]?type2?[DEFAULT?value1]],?......?[argn?[?{?IN?

8、?OUT?

9、?IN?OUT?}]?typen?[DEFAU

10、LT?valuen]])?[?AUTHID?DEFINER?

11、?CURRENT_USER?]RETURN?return_type??IS?

12、?AS????<類型.變量的聲明部分>?BEGIN????執(zhí)行部分????RETURN?expressionEXCEPTION????異常處理部分END?function_name;?l????????IN,OUT,INOUT是形參的模式。若省略,則為IN模式。IN模式的形參只能將實(shí)參傳遞給形參,進(jìn)入函數(shù)內(nèi)部,但只能讀不能寫(xiě),函數(shù)返回時(shí)實(shí)參的值不變。OUT模式的形參會(huì)忽略調(diào)用

13、時(shí)的實(shí)參值(或說(shuō)該形參的初始值總是NULL),但在函數(shù)內(nèi)部可以被讀或?qū)懀瘮?shù)返回時(shí)形參的值會(huì)賦予給實(shí)參。INOUT具有前兩種模式的特性,即調(diào)用時(shí),實(shí)參的值總是傳遞給形參,結(jié)束時(shí),形參的值傳遞給實(shí)參。調(diào)用時(shí),對(duì)于IN模式的實(shí)參可以是常量或變量,但對(duì)于OUT和INOUT模式的實(shí)參必須是變量。?l????????一般,只有在確認(rèn)function_name函數(shù)是新函數(shù)或是要更新的函數(shù)時(shí),才使用ORREPALCE關(guān)鍵字,否則容易刪除有用的函數(shù)。?例1.??????????獲取某部門的工資總和:?--獲取某部門的工資總和CR

14、EATE?OR?REPLACEFUNCTION?get_salary(??Dept_no?NUMBER,??Emp_count?OUT?NUMBER)??RETURN?NUMBER?IS??V_sum?NUMBER;BEGIN??SELECT?SUM(SALARY),?count(*)?INTO?V_sum,?emp_count????FROM?EMPLOYEES?WHERE?DEPARTMENT_ID=dept_no;??RETURN?v_sum;EXCEPTION???WHEN?NO_DATA_FOUND?T

15、HEN???????DBMS_OUTPUT.PUT_LINE('你需要的數(shù)據(jù)不存在!');???WHEN?OTHERS?THEN???????DBMS_OUTPUT.PUT_LINE(SQLCODE

16、

17、'---'

18、

19、SQLERRM);END?get_salary;?2.函數(shù)的調(diào)用函數(shù)聲明時(shí)所定義的參數(shù)稱為形式參數(shù),應(yīng)用程序調(diào)用時(shí)為函數(shù)傳遞的參數(shù)稱為實(shí)際參數(shù)。應(yīng)用程序在調(diào)用函數(shù)時(shí),可以使用以下三種方法向函數(shù)傳遞參數(shù):?第一種參數(shù)傳遞格式:位置表示法。即在調(diào)用時(shí)按形參的排列順序,依次寫(xiě)出實(shí)參的名稱,而將形參與實(shí)參關(guān)聯(lián)

20、起來(lái)進(jìn)行傳遞。用這種方法進(jìn)行調(diào)用,形參與實(shí)參的名稱是相互獨(dú)立,沒(méi)有關(guān)系,強(qiáng)調(diào)次序才是重要的。格式為:??????argument_value1[,argument_value2…]?例2:計(jì)算某部門的工資總和:?DECLARE??V_num?NUMBER;??V_sum?NUMBER;BEGIN??V_sum?:=get_salary(10,?v_num);??DBMS_

當(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. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫(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)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。