程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle數據庫基礎 >> Oracle過程和函數的區別

Oracle過程和函數的區別

編輯:Oracle數據庫基礎

Oracle過程和函數相信大家都比較了解,下面就為您詳細介紹Oracle過程和函數二者之間的區別,希望可以讓您對Oracle過程和函數有更深的認識。

Oracle過程和函數都以編譯後的形式存放在數據庫中,函數可以沒有參數也可以有多個參數並有一個返回值。過程有零個或多個參數,沒有返回值。函數和過程都可以通過參數列表接收或返回零個或多個值,函數和過程的主要區別不在於返回值,而在於他們的調用方式。Oracle過程是作為一個獨立執行語句調用的:

  1. pay_involume(invoice_nbr,30,due_date); 

函數以合法的表達式的方式調用:

  1. order_volumn:=open_orders(SYSDATE,30); 

創建過程的語法如下:

  1. CREATE [ OR REPLACE] PROCEDURE [schema.]procedure_name  
  2. [parameter_lister]  
  3. {AS|IS}  
  4. declaration_section  
  5. BEGIN  
  6. executable_section  
  7. [EXCEPTION  
  8. exception_section]  
  9. END [procedure_name]   

每個參數的語法如下:

  1. paramter_name mode datatype [(:=|DEFAULT) value] 

mode有三種形式:IN、OUT、INOUT。

IN表示在調用過程的時候,實際參數的取值被傳遞給該過程,形式參數被認為是只讀的,當過程結束時,控制會返回控制環境,實際參數的值不會改變。

OUT在調用過程時實際參數的取值都將被忽略,在過程內部形式參數只能是被賦值,而不能從中讀取數據,在過程結束後形式參數的內容將被賦予實際參數。

INOUT這種模式是IN和OUT的組合;在Oracle過程內部實際參數的值會傳遞給形式參數,形勢參數的值可讀也可寫,過程結束後,形勢參數的值將賦予實際參數。

創建函數的語法和過程的語法基本相同,唯一的區別在於函數有RETUREN子句

  1. CREATE [ OR REPLACE] FINCTION [schema.]function_name  
  2. [parameter_list]  
  3. RETURN returning_datatype  
  4. {AS|IS}  
  5. declaration_section  
  6. BEGIN  
  7. executable_section  
  8. [EXCEPTION]  
  9. exception_section  
  10. END [procedure_name]   

在執行部分函數必須有喲個或多個return語句。

在創建函數中可以調用單行函數和組函數,例如:

  1. CREATE OR REPLACE FUNCTION my_sin(DegreesIn IN NUMBER)  
  2. RETURN NUMBER  
  3. IS   
  4. pi NUMBER=ACOS(-1);  
  5. RadiansPerDegree NUMBER;  
  6.  
  7. BEGIN  
  8. RadiansPerDegree=pi/180;  
  9. RETURN(SIN(DegreesIn*RadiansPerDegree));  
  10. END   
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved