1樓:匿名使用者
例子:[sql] view plain copy print?
//建立過程
create or replace procedure add_emailinfo(namee email_info.fullname%type ,address email_info.email_address%type )
isbegin
insert into email_info(fullname,email_address) values (namee,address);
end;
//呼叫過程
call add_emailinfo('cherry','asdfsdf');
//建立函式
create or replace function sel_emailinfo(namee email_info.fullname%type )
return varchar2 is
address varchar2(30);
begin
select email_address into address from email_info
where trim(fullname)=trim(namee);
return address;
end ;
//呼叫函式
select sel_emailinfo('bbb') from dual;
2樓:千鋒教育
函式有返回值,而過程沒有,
簡單點就是
function test_f (parameter in varchar2) return varchar2;
procdrue test_p (parameter in varchar2);
declare
result varchar2;
begin
result := test_f; --函式有返回值 必須用變數去裝載
test_p; --過程沒有可直接呼叫.
end;
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儲存過程和函式的區別
6樓:匿名使用者
mysql教程4 mysql8運算子、函式、儲存過程及新增資料型別 19.mysql之儲存過程與自定義函式的區別 學習猿地
7樓:匿名使用者
一、儲存過程
儲存過程是儲存在資料庫中提供所有使用者程式呼叫的子程式,定義儲存過程的關鍵字為procedure。
例項一:
create or replace procedure pro1
asbegin
dbms_output.put_line('good good study');
end;
--執行儲存過程方式1
set serveroutput on;
begin
pro1();
end;
--執行儲存過程方式2
set serveroutput on;
execute pro1();
二、函式
函式與儲存過程的結構類似,但是函式必須有乙個return子句,用於返回函式值。關鍵字為function。
例項一:
create or replace function func1
return varchar--必須有返回值,且宣告返回值型別時不需要加大小
asmsg varchar(50);
begin
msg := 'good good study';
return msg;
end;
--執行函式方式1
select func1() from dual;
--執行函式方式2
set serveroutput on;
begin
dbms_output.put_line(func1());
end;
三、區別
1.儲存過程定義使用的是procedure,函式是function。
2.儲存過程中沒有return返回值,但函式中可以,而且函式中必須有return。
3.執行方式略有不同,儲存過程的執行方式有兩
a.使用execute,b.使用begin和end
函式除了儲存過程的兩種方式外,還可以當做表示式使用,
例如放在select中(select func1() form dual;)。
oracle中 儲存過程,過程和函式有什麼區別和聯絡
8樓:匿名使用者
聯絡:1.建立語法結構相似,都可以攜帶多個傳入引數和傳出引數。
2.都是一次編譯,多次執行。
區別:1.儲存過程定義關鍵字用procedure,函式定義用function。
2.儲存過程中不能用return返回值,但函式中可以,而且函式中必須有return子句。
3.執行方式略有不同,儲存過程的執行方式有兩種(1.使用execute2.
使用begin和end),函式除了儲存過程的兩種方式外,還可以當作表示式使用,例如放在select中(select f1() form dual;)。
總結:如果只有乙個返回值,用儲存函式,否則,一般用儲存過程。
Oracle中儲存過程,過程和函式有什麼區別和聯絡
聯絡 1.建立語法結構相似,都可以攜帶多個傳入引數和傳出引數。2.都是一次編譯,多次執行。區別 1.儲存過程定義關鍵字用procedure,函式定義用function。2.儲存過程中不能用return返回值,但函式中可以,而且函式中必須有return子句。3.執行方式略有不同,儲存過程的執行方式有兩...
oracle函式和儲存過程有什麼區別
一 主體不同 1 函式 當需要分析資料清單中的數值是否符合特定條件時,使用資料庫工作表函式。2 儲存過程 是在大型資料庫系統中,一組為了完成特定功能的sql 語句集,儲存在資料庫中,一次編譯後永久有效。二 特點不同 1 函式 只能返回乙個變數,可以嵌入sql中和儲存過程中使用。2 儲存過程 使用者通...
簡述儲存過程和函式的區別,簡述儲存過程和函式在語法上的區別?
mysql教程4 mysql8運算子 函式 儲存過程及新增資料型別 19.mysql之儲存過程與自定義函式的區別 學習猿地 過程是編制程式時定義的乙個語句序列,用來完成某種指定的操作。過程說明是由過程首和分程式 說明部分和過程體 組成,過程定義如下 過程定義 procedure 過程識別符號 形式參...