Oracle過程與函數的區別分析_oracle

來源:互聯網
上載者:User

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

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

pay_involume(invoice_nbr,30,due_date);

函數以合法的運算式的方式調用:

order_volumn:=open_orders(SYSDATE,30);

建立過程的文法如下:

CREATE [ OR REPLACE] PROCEDURE [schema.]procedure_name [parameter_lister] {AS|IS} declaration_section BEGIN executable_section [EXCEPTION exception_section] END [procedure_name] 

每個參數的文法如下:

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

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

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

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

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

建立函數的文法和過程的文法基本相同,唯一的區別在於函數有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]

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

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

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 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.