Oracle過程與函數(shù)的區(qū)別分析
Oracle過程和函數(shù)相信大家都比較了解,下面就為您詳細(xì)介紹Oracle過程和函數(shù)二者之間的區(qū)別,希望可以讓您對(duì)Oracle過程和函數(shù)有更深的認(rèn)識(shí)。
Oracle過程和函數(shù)都以編譯后的形式存放在數(shù)據(jù)庫(kù)中,函數(shù)可以沒有參數(shù)也可以有多個(gè)參數(shù)并有一個(gè)返回值。過程有零個(gè)或多個(gè)參數(shù),沒有返回值。函數(shù)和過程都可以通過參數(shù)列表接收或返回零個(gè)或多個(gè)值,函數(shù)和過程的主要區(qū)別不在于返回值,而在于他們的調(diào)用方式。Oracle過程是作為一個(gè)獨(dú)立執(zhí)行語(yǔ)句調(diào)用的:
pay_involume(invoice_nbr,30,due_date);
函數(shù)以合法的表達(dá)式的方式調(diào)用:
order_volumn:=open_orders(SYSDATE,30);
創(chuàng)建過程的語(yǔ)法如下:
CREATE [ OR REPLACE] PROCEDURE [schema.]procedure_name
[parameter_lister]
{AS|IS}
declaration_section
BEGIN
executable_section
[EXCEPTION
exception_section]
END [procedure_name]
每個(gè)參數(shù)的語(yǔ)法如下:
paramter_name mode datatype [(:=|DEFAULT) value]
mode有三種形式:IN、OUT、INOUT。
IN表示在調(diào)用過程的時(shí)候,實(shí)際參數(shù)的取值被傳遞給該過程,形式參數(shù)被認(rèn)為是只讀的,當(dāng)過程結(jié)束時(shí),控制會(huì)返回控制環(huán)境,實(shí)際參數(shù)的值不會(huì)改變。
OUT在調(diào)用過程時(shí)實(shí)際參數(shù)的取值都將被忽略,在過程內(nèi)部形式參數(shù)只能是被賦值,而不能從中讀取數(shù)據(jù),在過程結(jié)束后形式參數(shù)的內(nèi)容將被賦予實(shí)際參數(shù)。
INOUT這種模式是IN和OUT的組合;在Oracle過程內(nèi)部實(shí)際參數(shù)的值會(huì)傳遞給形式參數(shù),形勢(shì)參數(shù)的值可讀也可寫,過程結(jié)束后,形勢(shì)參數(shù)的值將賦予實(shí)際參數(shù)。
創(chuàng)建函數(shù)的語(yǔ)法和過程的語(yǔ)法基本相同,唯一的區(qū)別在于函數(shù)有RETUREN子句
CREATE [ OR REPLACE] FINCTION [schema.]function_name
[parameter_list]
RETURN returning_datatype
{AS|IS}
declaration_section
BEGIN
executable_section
[EXCEPTION]
exception_section
END [procedure_name]
在執(zhí)行部分函數(shù)必須有喲個(gè)或多個(gè)return語(yǔ)句。
在創(chuàng)建函數(shù)中可以調(diào)用單行函數(shù)和組函數(shù),例如:
CREATE OR REPLACE FUNCTION my_sin(DegreesIn IN NUMBER) RETURN NUMBER IS pi NUMBER=ACOS(-1); RadiansPerDegree NUMBER; BEGIN RadiansPerDegree=pi/180; RETURN(SIN(DegreesIn*RadiansPerDegree)); END
- Oracle 函數(shù)大全[字符串函數(shù),數(shù)學(xué)函數(shù),日期函數(shù)]
- Oracle文本函數(shù)簡(jiǎn)介
- Oracle 系統(tǒng)變量函數(shù)用法指南
- Oracle to_char函數(shù)的使用方法
- oracle中的trim函數(shù)使用介紹
- Oracle to_date()函數(shù)的用法介紹
- Oracle定義DES加密解密及MD5加密函數(shù)示例
- oracle的nvl函數(shù)的使用介紹
- Oracle排名函數(shù)(Rank)實(shí)例詳解
- Oracle數(shù)學(xué)相關(guān)函數(shù)小結(jié)
相關(guān)文章
oracle數(shù)據(jù)庫(kù)添加或刪除一列的sql語(yǔ)句
需要注意的一點(diǎn),如果要修改的表,不是當(dāng)前的用戶的表,那么就需要添加上用戶的名稱。以及有修改此表的權(quán)限2012-05-05
Oracle PL/SQL中“表或視圖不存在“錯(cuò)誤的解決方案
在Oracle PL/SQL開發(fā)中,許多開發(fā)者都遇到過這個(gè)令人困惑的錯(cuò)誤表或視圖不存在,這個(gè)錯(cuò)誤看似簡(jiǎn)單,但背后可能有多種原因,特別是當(dāng)表確實(shí)存在時(shí),這個(gè)錯(cuò)誤更讓人摸不著頭腦,所以本文介紹了詳細(xì)的解決方案,需要的朋友可以參考下2025-04-04
Oracle逗號(hào)分隔列轉(zhuǎn)行實(shí)現(xiàn)方法
在做系統(tǒng)時(shí),經(jīng)常會(huì)遇到在一個(gè)字段中,用逗號(hào)或其他符號(hào)分隔存儲(chǔ)多個(gè)信息,例如保存某個(gè)用戶的一對(duì)多權(quán)限時(shí),在權(quán)限組這個(gè)字段中,就會(huì)逗號(hào)分隔保存多個(gè)權(quán)限編號(hào)。2010-12-12
使用sqlplus連接Oracle數(shù)據(jù)庫(kù)問題
這篇文章主要介紹了使用sqlplus連接Oracle數(shù)據(jù)庫(kù)問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-12-12
Oracle?ORA-00904:標(biāo)識(shí)符無(wú)效解決方法(太坑了!!)
最近執(zhí)行sql時(shí)oracle報(bào)錯(cuò)ORA-00904:標(biāo)識(shí)符無(wú)效,所以這篇文章主要給大家介紹了關(guān)于Oracle?ORA-00904:標(biāo)識(shí)符無(wú)效解決方法的相關(guān)資料,需要的朋友可以參考下2022-10-10

