1. 程式人生 > >PL/SQL與儲存過程的區別

PL/SQL與儲存過程的區別

  1. 返回值的區別,函式有1個返回值,而儲存過程是通過引數返回的,可以有多個或者沒有
  2. 呼叫的區別,函式可以在查詢語句中直接呼叫,而儲存過程必須單獨呼叫.
  3. 函式一般情況下是用來計算並返回一個計算結果而儲存過程一般是用來完成特定的資料操作(比如修改、插入資料庫表或執行某些DDL語句等等)
  4. 引數的返回情況來看:
    如果返回多個引數值最好使用儲存過程,如果只有一個返回值的話可以使用函式;
  5. 從呼叫情況來看:
    如果在SQL語句(DML或SELECT)中呼叫的話一定是儲存函式或儲存的封裝函式不可以是儲存過程,但呼叫儲存函式的時候還有好多限制以及函式的純度等級的問題.
  6. oracle函式和儲存過程最大的區別就在於,函式必須帶上一個return返回值,後面跟的是返回值的型別,而儲存過程可以不帶任何返回值。
  7. 另外,儲存過程和函式同樣支援in,out,in out這三種類型的引數,對應的是分別指明輸入性的引數、輸出型的引數、輸入輸出型的引數。也就是說如果我們需要返回多個值,除了可以使用儲存過程來實現之外,也可以用函式來實現,方法是你將其中一個用return來返回,其他就指明該資料為out引數就可以了。
  8. Oracle中儲存過程和函式都可以返回值,但是函式必須要返回值,並一般只返回一個值,而儲存過程則沒有這個限制。從一般應用上來看,如果不需要返回值或者需要多個返回值,使用儲存過程,如果只用一個返回值,就使用函式,從一般程式設計師的習慣上來看,這樣更符合思維。

內容來自百度