oracle函式和儲存過程有什麼區別

時間 2021-08-14 09:12:54

1樓:匿名使用者

一、主體不同

1、函式:當需要分析資料清單中的數值是否符合特定條件時,使用資料庫工作表函式。

2、儲存過程:是在大型資料庫系統中,一組為了完成特定功能的sql 語句集,儲存在資料庫中,一次編譯後永久有效。

二、特點不同

1、函式:只能返回乙個變數,可以嵌入sql中和儲存過程中使用。

2、儲存過程:使用者通過指定儲存過程的名字並給出引數(如果該儲存過程帶有引數)來執行。儲存過程是資料庫中的乙個重要物件。在資料量特別龐大的情況下利用儲存過程能達到倍速的效率提公升。

三、功能不同

1、函式:不能用臨時表,只能用表變數,函式不能執行一組修改全域性資料庫狀態的操作。可以作為查詢語句的乙個部分來呼叫,由於函式可以返回乙個表物件,所以在查詢中位於from關鍵字後面。

2、儲存過程:儲存過程需要讓sql的query可以執行,儲存過程可以返回引數,如記錄集。sql語句中不可以含有儲存過程。

2樓:手機使用者

1. 返回值的區別,函式有1個返回值,而儲存過程是通過引數返回的,可以有多個或者沒有

2.呼叫的區別,函式可以在查詢語句中直接呼叫,而儲存過程必須單獨呼叫.

函式一般情況下是用來計算並返回乙個計算結果而儲存過程一般是用來完成特定的資料操作(比如修改、插入資料庫表或執行某些ddl語句等等)

引數的返回情況來看:

如果返回多個引數值最好使用儲存過程,如果只有乙個返回值的話可以使用函式;

從呼叫情況來看:

如果在sql語句(dml或select)中呼叫的話一定是儲存函式或儲存的封裝函式不可以是儲存過程,但呼叫儲存函式的時候還有好多限制以及函式的純度等級的問題.

oracle函式和儲存過程最大的區別就在於,函式必須帶上乙個return返回值,後面跟的是返回值的型別,而儲存過程可以不帶任何返回值。

另外,儲存過程和函式同樣支援in,out,in out這三種型別的引數,對應的是分別指明輸入性的引數、輸出型的引數、輸入輸出型的引數。也就是說如果我們需要返回多個值,除了可以使用儲存過程來實現之外,也可以用函式來實現,方法是你將其中乙個用return來返回,其他就指明該資料為out引數就可以了。

oracle中儲存過程和函式都可以返回值,但是函式必須要返回值,並一般只返回乙個值,而儲存過程則沒有這個限制。從一般應用上來看,如果不需要返回值或者需要多個返回值,使用儲存過程,如果只用乙個返回值,就使用函式,從一般程式設計師的習慣上來看,這樣更符合思維。

3樓:

最簡單的解釋是 , 函式返回值,而儲存過程不返回。

Oracle中儲存過程,過程和函式有什麼區別和聯絡

聯絡 1.建立語法結構相似,都可以攜帶多個傳入引數和傳出引數。2.都是一次編譯,多次執行。區別 1.儲存過程定義關鍵字用procedure,函式定義用function。2.儲存過程中不能用return返回值,但函式中可以,而且函式中必須有return子句。3.執行方式略有不同,儲存過程的執行方式有兩...

oracle儲存過程和函式的區別

例子 sql view plain copy print?建立過程 create or replace procedure add emailinfo namee email info.fullname type address email info.email address type isbeg...

oracle儲存過程遊標和動態賦值問題

隨o天 建立 create or replace procedure t ts ref cur out sys refcursor as begin open ref cur for select leixing from diaobodan end t ts 呼叫 declare s cur sy...