1、函式有返回值,過程沒有2、函式呼叫在一個表示式中,過程則是作為pl/sql程式的一個語句過程和函式都以編譯後的形式存放在資料庫中,函式可以沒有引數也可以有多個引數並有一個返回值。過程有零個或多個引數,沒有返回值。函式和過程都可以透過引數列表接收或返回零個或多個值,函式和過程的主要區別不在於返回值,而在於他們的呼叫方式,過程是作為一個獨立執行語句呼叫的,函式以合法的表示式的方式呼叫createorreplacefunctionfunc(v_nameinvarchar2)returnvarchar2isbeginreturn(v_name||"hello");end;呼叫:declarev_namevarchar2(20);beginv_name:=func("cheng");dbms_output.put_line(v_name);end;帶out引數的函式createorreplacefunctionfunc(v_nameinvarchar2,v_contentoutvarchar2)returnvarchar2isbeginv_content:=v_name||"hello";returnv_content;end;呼叫:declarev_namevarchar2(20);v_name1varchar2(20);beginv_name1:=func("susu",v_name);--返回v_name值dbms_output.put_line(v_name1);--列印func結果dbms_output.put_line(v_name);--列印v_name結果end;帶inout引數的函式createorreplacefunctionfunc(v_nameinoutvarchar2)returnvarchar2isbeginv_name:=v_name||"hello";return"cheng";end;呼叫:declarev_inoutvarchar2(20):="world";v_retvarchar2(20);beginv_ret:=func(v_inout);--返回呼叫v_inout值(作為出參)dbms_output.put_line(v_ret);--列印func結果dbms_output.put_line(v_inout);--返回v_name結果end;
1、函式有返回值,過程沒有2、函式呼叫在一個表示式中,過程則是作為pl/sql程式的一個語句過程和函式都以編譯後的形式存放在資料庫中,函式可以沒有引數也可以有多個引數並有一個返回值。過程有零個或多個引數,沒有返回值。函式和過程都可以透過引數列表接收或返回零個或多個值,函式和過程的主要區別不在於返回值,而在於他們的呼叫方式,過程是作為一個獨立執行語句呼叫的,函式以合法的表示式的方式呼叫createorreplacefunctionfunc(v_nameinvarchar2)returnvarchar2isbeginreturn(v_name||"hello");end;呼叫:declarev_namevarchar2(20);beginv_name:=func("cheng");dbms_output.put_line(v_name);end;帶out引數的函式createorreplacefunctionfunc(v_nameinvarchar2,v_contentoutvarchar2)returnvarchar2isbeginv_content:=v_name||"hello";returnv_content;end;呼叫:declarev_namevarchar2(20);v_name1varchar2(20);beginv_name1:=func("susu",v_name);--返回v_name值dbms_output.put_line(v_name1);--列印func結果dbms_output.put_line(v_name);--列印v_name結果end;帶inout引數的函式createorreplacefunctionfunc(v_nameinoutvarchar2)returnvarchar2isbeginv_name:=v_name||"hello";return"cheng";end;呼叫:declarev_inoutvarchar2(20):="world";v_retvarchar2(20);beginv_ret:=func(v_inout);--返回呼叫v_inout值(作為出參)dbms_output.put_line(v_ret);--列印func結果dbms_output.put_line(v_inout);--返回v_name結果end;