1. 程式人生 > >oracle函數和存儲過程有什麽區別

oracle函數和存儲過程有什麽區別

以及 插入數據 應該 部分 思維 必須 等級 中一 func

oracle函數和存儲過程有什麽區別

1. 返回值的區別,函數有1個返回值,而存儲過程是通過參數返回的,可以有多個或者沒有 2.調用的區別,函數可以在查詢語句中直接調用,而存儲過程必須單獨調用. 函數一般情況下是用來計算並返回一個計算結果而存儲過程一般是用來完成特定的數據操作(比如修改、插入數據庫表或執行某些DDL語句等等) 參數的返回情況來看: 如果返回多個參數值最好使用存儲過程,如果只有一個返回值的話可以使用函數; 從調用情況來看: 如果在SQL語句(DML或SELECT)中調用的話一定是存儲函數或存儲的封裝函數不可以是存儲過程,但調用存儲函數的時候還有好多限制以及函數的純度等級的問題. 如果是在過程化語句中調用的話,就要看你要實現什麽樣的功能。函數一般情況下是用來計算並返回一個計算結果而存儲過程一般是用來完成特定的數據操作(比如修改、插入數據庫表或執行某些DDL語句等等),所以雖然他們的語法上很相似但用戶在使用他們的時候所需要完成的功能大部分情況下是不同的。 oracle函數和存儲過程最大的區別就在於,函數必須帶上一個return返回值,後面跟的是返回值的類型,而存儲過程可以不帶任何返回值。 另外,存儲過程和函數同樣支持in,out,in out這三種類型的參數,對應的是分別指明輸入性的參數、輸出型的參數、輸入輸出型的參數。也就是說如果我們需要返回多個值,除了可以使用存儲過程來實現之外,也可以用函數來實現,方法是你將其中一個用return來返回,其他就指明該數據為out參數就可以了。 Oracle中存儲過程和函數都可以返回值,但是函數必須要返回值,並一般只返回一個值,而存儲過程則沒有這個限制。從一般應用上來看,如果不需要返回值或者需要多個返回值,使用存儲過程,如果只用一個返回值,就使用函數,從一般程序員的習慣上來看,這樣更符合思維。 還有存儲過程的命名最好以proc_打頭,函數則是func_打頭,變量則應該用v_打頭,代碼可以考慮縮進,增強可閱讀性和美觀度!

oracle函數和存儲過程有什麽區別