天天看點

oracle中怎麼自定義函數,Oracle自定義函數

使用者自定義函數是存儲在資料庫中的代碼塊,可以把值傳回到調用程式。函數的參數有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自定義函數所遇到的程式開發問題。

如果覺得程式設計之家網站内容還不錯,歡迎将程式設計之家網站推薦給程式員好友。

本圖文内容來源于網友網絡收集整理提供,作為學習參考使用,版權屬于原作者。