Oracle—自定義function語法(轉載)

轉載,原文網址:http://www.mincoder.com/oracle/1383.shtmlhtml

 

用戶自定義函數是存儲在數據庫中的代碼塊,能夠把值返回到調用程序。函數的參數有3種類型:數據庫

(1)in參數類型:表示輸入給函數的參數,該參數只能用於傳值,不能被賦值。express

(2)out參數類型:表示參數在函數中被賦值,能夠傳給函數調用程序,該參數只能用於賦值,不能用於傳值。oracle

(3)in out參數類型:表示參數既能夠傳值,也能夠被賦值。函數

 

1.函數的建立spa

語法格式:code

 

Sql代碼  orm

  1.     create [or replace] function functionName  htm

  2.     (  it

  3.         parameterName1 mode1 dataType1,  

  4.         parameterName2 mode2 dataType2,  

  5.         ...  

  6.     )  

  7.     return returnDataType  

  8.     is/as  

  9.     begin  

  10.         function_body  

  11.         return expression  

  12.     end functionName; -- 結束函數的聲明,也能夠直接寫end不加函數名。  

  13. --其中mode一、mode2表示參數類型,dataType表示參數的數據類型。returnDataType表示返回值類型。  

 

示例1:

 

Sql代碼  

  1. create or replace function explainParameter -- 定義一個名爲explainParameter的函數  

  2. (  

  3.     inParam in char,    --  定義該參數類型爲in參數類型,只能用於賦值  

  4.     outParam out char,  --  out參數類型,只能用於傳值  

  5.     inAndOutParam in out char   --  in out參數類型,既能賦值,又能傳值  

  6. )  

  7. return char     --  表示函數的返回類型爲char類型  

  8. as      -- 表示函數體部分  

  9.     returnChar char;        --  聲明零時變量,這是無關緊要的,這裏聲明返回變量爲char類型的returnChar變量。  

  10. begin  

  11.     inParam := 'Hello World';   -- 這是錯誤的,in類型的參數只能用來傳值,不能賦值  

  12.     outParam := 'Hello World'; -- 這是正確的,out類型的參數能夠用來被賦值  

  13.     inAndOutParam := 'Hello World'; -- 這是正確的,in out參數既能夠用來傳值,又能夠被賦值  

  14.     inAndOutParam := outParam; -- 這是錯誤的,out參數不能用來傳值  

  15.     return(returnChar); -- 返回returnChar,也能夠不要括號,直接寫return returnChar。  

  16. end explainParameter; -- 結束explainParameter函數,表示explainParameter函數聲明結束,也能夠直接寫end,不加函數名。  

 

 

示例2:

 

Sql代碼  

  1. CREATE OR REPLACE   

  2. FUNCTION testFunc (num1 IN NUMBER, num2 IN NUMBER)  

  3. RETURN NUMBER  

  4. AS  

  5.     num3 number;  

  6.     num4 number;  

  7.     num5 number;  

  8. BEGIN  

  9.     num3 := num1 + num2;  

  10.     num4 := num1 * num2;  

  11.     num5 := num3 * num4;  

  12.     RETURN num5;  

  13. END;  

 

 

 

2.函數的調用

自定義函數的調用方法跟系統內置函數的調用方法相同,能夠直接在select語句中調用,也能夠在函數中調用,以下:

select testFunc(1,2) from tableName;

num := testFunc(1,2);

 

 

3.函數的刪除

自定義函數的刪除方法相似於表的刪除,語法格式以下:

drop function [schema.]functionName;

相關文章
相關標籤/搜索