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

2022-02-16 03:58:07 字數 2980 閱讀 8803

1樓:匿名使用者

intersect指的的兩個select sql的交集

用法為sql1 intersact sql2

注意, sql1與sql2的欄位數集資料型態須相同

2樓:匿名使用者

交集select * from ...

intersect

select * from ...

結果就是兩個查詢的交集

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

3樓:匿名使用者

一、主體不同

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

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

二、特點不同

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

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

三、功能不同

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

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

4樓:手機使用者

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

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

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

引數的返回情況來看:

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

從呼叫情況來看:

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

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

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

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

5樓:育知同創教育

oracle中儲存過程和函式的區別如下:

1.儲存過程實現的功能要複雜一點,而函式的實現的功能針對性比較強。

2.對於儲存過程來說可以返回引數,而函式只能返回值或者表物件。

3.儲存過程一般是作為一個獨立的部分來執行,而函式可以作為查詢語句的一個部分來呼叫,由於函式可以返回一個表物件,因此它可以在查詢語句中位於from關鍵字的後面。

4.當儲存過程和函式被執行的時候,sql manager會到procedure cache中去取相應的查詢語句,如果在procedure cache裡沒有相應的查詢語句,sql manager就會對儲存過程和函式進行編譯。

6樓:

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

oracle 中function函式怎麼使用?能否幫我詳細分析一下,謝謝~ 5

7樓:匿名使用者

oracle中的function有兩種,一種是系統內建的函式(直接拿來用就行),一種是自定義的(自己寫的完成特定功能的)。function可以在dml語句中執行。如select upper('aabbccdd') '大寫' from dual 其中upper就是系統自帶的函式,是把引數中的字串變成大寫字元。

自定義函式的語句格式是:

create or replace function 函式名 return 返回值型別 is [宣告部分]

begin 主體語句; return 結果; [exception 異常處理部分;] end;

呼叫:select 函式名 from dual;

或者像執行procedure一樣呼叫也可以 begin 函式名; end;

如何建立oracle函式

oracle中定義儲存過程和函式,到底有什麼用?

8樓:匿名使用者

1.減少應用對資料庫的請求次數。

2.減少應用伺服器從資料庫獲取資料的數量,減少網路吞吐量。

3.減少應用伺服器計算壓力。

9樓:西門公子慶

函式一般都是對資料的簡單處理,可以方便複用。

舉個簡單例子,

比如要對一個數字n做比較複雜的運算,而且需要多次使用,那麼建立函式get_n(number);

在每次需要這個結果的時候都可以呼叫函式來處理比如 select get_n(n) from dual;

而不需要每次都把整個計算過程都做一次。

儲存過程主要是處理一些複雜的業務,比如一個生成訂單的過程,我需要記錄訂單表,日誌表,更新客戶資訊表,更新客戶積分等等的操作。

那可以把這些操作都放在一個儲存過程中實現。

每次生成訂單,只需要通過程式呼叫一下儲存過程就可以了。而不需要通過程式去多次連結資料庫,每次執行對一個表的操作。

oracle中的convert函式的功能和引數列表

convert函式的功能是將源字串c1 從一個語言字符集set2轉換到另一個目的set1字符集 語法 convert c1,set1,set2 引數 c1,字串,set1,set2為字元型引數 返回 字串 示例 select convert strutz we8hp f7dec conversion...

如何實現oracle11g和oracle10g的資料互相匯入匯出

方法 步驟 開啟開始選單中的執行 開啟以後,在執行框中輸入cmd,點選確定 執行以下命令 sqlplus system 密碼 2 建立資料匯出目錄expnc dir為目錄名,e ncdatabak 為資料庫實際目錄,命令如下 create directory expnc dir as e ncdat...

oracle問題!求助

我想你的表資料可能是如下的 流程名稱 允許籤批人 允許籤批 a b c d e計劃審批 f g h 你的人名放在一起了,僅僅依靠空格來區分。這樣的 放資料容易處理資料就麻煩了。建議改表。方案 建立兩個表 a表 流程表 就2個欄位 流程名稱 流程編碼b表 人員表 2個 欄位 人員名稱 流程編碼並且b表...