使用者自定義函數是存儲在資料庫中的代碼塊,可以把值傳回到調用程式。函數的參數有3種類型:
(1)in參數類型:表示輸入給函數的參數,該參數隻能用于傳值,不能被指派。
(2)out參數類型:表示參數在函數中被指派,可以傳給函數調用程式,該參數隻能用于指派,不能用于傳值。
(3)in out參數類型:表示參數既可以傳值,也可以被指派。
1.函數的建立
文法格式:
create[orreplace]functionfunctionName
(
parameterName1mode1dataType1,
parameterName2mode2dataType2,
...
)
returnreturnDataType
is/as
begin
function_body
returnexpression
endfunctionName;--結束函數的聲明,也可以直接寫end不加函數名。
--其中mode1、mode2表示參數類型,dataType表示參數的資料類型。returnDataType表示傳回值類型。
示例1:
createorreplacefunctionexplainParameter--定義一個名為explainParameter的函數
(
inParaminchar,--定義該參數類型為in參數類型,隻能用于指派
outParamoutchar,--out參數類型,隻能用于傳值
inAndOutParaminoutchar--inout參數類型,既能指派,又能傳值
)
returnchar--表示函數的傳回類型為char類型
as--表示函數體部分
returnCharchar;--聲明零時變量,這是可有可無的,這裡聲明傳回變量為char類型的returnChar變量。
begin
inParam:='HelloWorld';--這是錯誤的,in類型的參數隻能用來傳值,不能指派
outParam:='HelloWorld';--這是正确的,out類型的參數可以用來被指派
inAndOutParam:='HelloWorld';--這是正确的,inout參數既可以用來傳值,又可以被指派
inAndOutParam:=outParam;--這是錯誤的,out參數不能用來傳值
return(returnChar);--傳回returnChar,也可以不要括号,直接寫returnreturnChar。
endexplainParameter;--結束explainParameter函數,表示explainParameter函數聲明結束,也可以直接寫end,不加函數名。
示例2:
CREATEORREPLACE
FUNCTIONtestFunc(num1INNUMBER,num2INNUMBER)
RETURNNUMBER
AS
num3number;
num4number;
num5number;
BEGIN
num3:=num1+num2;
num4:=num1*num2;
num5:=num3*num4;
RETURNnum5;
END;
自定義函數的調用方法跟系統内置函數的調用方法相同,可以直接在select語句中調用,也可以在函數中調用,如下:
select testFunc(1,2) from tableName;
num := testFunc(1,2);
自定義函數的删除方法類似于表的删除,文法格式如下:
drop function [schema.]functionName;
總結
以上是程式設計之家為你收集整理的Oracle自定義函數全部内容,希望文章能夠幫你解決Oracle自定義函數所遇到的程式開發問題。
如果覺得程式設計之家網站内容還不錯,歡迎将程式設計之家網站推薦給程式員好友。
本圖文内容來源于網友網絡收集整理提供,作為學習參考使用,版權屬于原作者。