oracle的存儲函數
函數就是函數,跟你用的oracle 內置函數是一樣的,帶參數或者不帶參數,返回一個結果
創建語句 create or replace funtion (……)
存儲過程一邊是處理比較復雜的處理邏輯或者機械化調用等
創建語句 CREATE OR REPLACE PROCEDURE(……)
他倆是不同的東西,存儲可以調用函數,
『貳』 oracle中函數和存儲過程的區別和聯系
函數有1個返回值,而存儲過程可以有多個或者沒有。
函數可以在其他語句中直接調用,而存儲過程必須單獨調用。
函數通常用於計算或較為單一的數據功能,存儲過程相對完成更復雜的復合性的數據功能。
最關鍵普通語句每次執行都要編譯,而存儲過程只在創建時編譯之後直接調用,速度更快,在大數據復雜功能時尤其明顯。
存儲過程還可以指定用戶許可權。
『叄』 oracle 怎麼執行存儲過程跟函數
調用oracle存儲過程用begin...end的方式。
基本語法:
begin
存儲過程名(參數1,參數2……);--如果無參數則省略括弧及括弧內部分end;
如,有存儲過程:
create
or
replace
procere
p_testasv_begintime
varchar2(20);v_endtime
varchar2(20);v_str
varchar2(10);begin
v_begintime:=to_char(sysdate,'yyyy-mm-dd
hh24:mi:ss');
select
'badkano'
into
v_str
from
al;
v_endtime:=to_char(sysdate,'yyyy-mm-dd
hh24:mi:ss');
dbms_output.put_line('開始時間為:'||v_begintime);
dbms_output.put_line('結束時間為:'||v_endtime);end;
執行:begin
p_test;end;
『肆』 oracle函數和存儲過程有什麼區別
一、主體不同
1、函數:當需要分析數據清單中的數值是否符合特定條件時,使用資料庫工作表函數。
2、存儲過程:是在大型資料庫系統中,一組為了完成特定功能的sql 語句集,存儲在資料庫中,一次編譯後永久有效。
二、特點不同
1、函數:只能返回一個變數,可以嵌入sql中和存儲過程中使用。
2、存儲過程:用戶通過指定存儲過程的名字並給出參數(如果該存儲過程帶有參數)來執行。存儲過程是資料庫中的一個重要對象。在數據量特別龐大的情況下利用存儲過程能達到倍速的效率提升。
三、功能不同
1、函數:不能用臨時表,只能用表變數,函數不能執行一組修改全局資料庫狀態的操作。可以作為查詢語句的一個部分來調用,由於函數可以返回一個表對象,所以在查詢中位於from關鍵字後面。
2、存儲過程:存儲過程需要讓sql的query可以執行,存儲過程可以返回參數,如記錄集。sql語句中不可以含有存儲過程。
『伍』 oracle中的存儲過程與函數
函數是有返回值的,存儲過程沒有。
在BODY中的話,一般函數都是SELECT語句,而存儲過程是包括DML語句的。
『陸』 oracle中定義存儲過程和函數,到底有什麼用
函數一般都是對數據的簡單處理,可以方便復用。
舉個簡單例子,
比如要對一個數字N做比較復雜的運算,而且需要多次使用,那麼建立函數get_N(number);
在每次需要這個結果的時候都可以調用函數來處理
比如 select get_N(n) from al;
而不需要每次都把整個計算過程都做一次。
存儲過程主要是處理一些復雜的業務,比如一個生成訂單的過程,我需要記錄訂單表,日誌表,更新客戶信息表,更新客戶積分等等的操作。
那可以把這些操作都放在一個存儲過程中實現。
每次生成訂單,只需要通過程序調用一下存儲過程就可以了。而不需要通過程序去多次鏈接資料庫,每次執行對一個表的操作。
『柒』 Oracle 存儲過程和函數的區別
Oracle中函數和存儲過程僅體現在一個地方:
函數有返回值,而存儲過程沒有返回值(當然,兩者都可以通過定義out參數來實現返回值)
其實,Oracle函數和存儲過程差別很小,對比其他資料庫,比如SqlServer:
sqlserver中,函數是不能存在非select的dml語句的,換句話說,函數中,sqlserver是不能出現update、delete、insert等語句的
而Oracle中,是十分自由和寬容的,update、delete、insert等語句都可以出現
但因為Oracle的自由度,會引起其它一些問題:如果使用C#來調用Oracle的函數時,會出現因函數含有update等語句而無法調用,只能換成存儲過程或者在函數外再加一層存儲過程來實現調用。
『捌』 oracle存儲過程與函數題目
函數和存儲過程的區別
從參數的返回情況來看:
如果返回多個參數值最好使用存儲過程,如果只有一個返回值的話可以使用函數;
從調用情況來看:
如果在sql語句(dml或select)中調用的話一定是存儲函數或存儲的封裝函數不可以是存儲過程,但調用存儲函數的時候還有好多限制以及函數的純度等級的問題,你可以參考《oracle9ipl\sql程序設計》(機械工業出版社);
如果是在過程化語句中調用的話,就要看你要實現什麼樣的功能。函數一般情況下是用來計算並返回一個計算結果而存儲過程一般是用來完成特定的數據操作(比如修改、插入資料庫表或執行某些ddl語句等等),所以雖然他們的語法上很相似但用戶在使用他們的時候所需要完成的功能大部分情況下是不同的。
『玖』 Oracle中存儲過程和函數的區別
函數有返回值,而過程沒有,
簡單點就是
function test_f (parameter in varchar2) return varchar2;
procdrue test_p (parameter in varchar2);
declare
result varchar2;
begin
result := test_f; --函數有返回值 必須用變數去裝載
test_p; --過程沒有可直接調用.
end;