1.在開發程序中,為了一個特定的業務功能,會向數據庫進行多次連接關閉連接(連接和關閉數據庫是很耗費資源的),需要對數據庫進行多次I/O讀寫,性能比較低。如果把這些業務放到PLSQL中,在應用程序中只需要調用PLSQL就可以做到連接關閉一次數據庫就可以實現我們的業務,可以大大提高效率。
2.ORACLE官方給出的解釋:能夠讓數據庫操作的不要放在程序中,在數據庫實現基本不會出錯,在程序操作中可能會出錯,(如果在數據庫中操作,可以有一點的日志恢復等功能)
3.語法
1 create or replace procedure 過程名稱 [(參數列表)] is 2 begin 3 4 5 end 過程名稱;
3.3無參存儲
1 create or replace procedure p_a is 2 begin 3 dbms_output.put_line('hello world'); 4 end p_a;
調用存儲:
1 begin 2 -- Call the procedure 3 p_a;
4 end;
運行結果:
在SQLPLUS通過exce調用
3.4 帶輸入參數的存儲過程
1 --查詢並打印員工號7839的姓名和薪水 2 --存儲過程,要求:調用的時候傳入員工編號,自動控制打印 3 create or replace procedure p_query(i_empno IN emp.empno%TYPE) as 4 --聲明變量 5 v_ename emp.ename%TYPE; 6 v_sal emp.sal%TYPE; 7 begin 8 SELECT ename,sal INTO v_ename,v_sal FROM emp WHERE empno = i_empno; 9 --打印變量 10 DBMS_OUTPUT.PUT_LINE('姓名:' || V_ENAME || '薪水:' || V_SAL); 11 end p_query;
調用:
1 begin 2 -- Call the procedure 3 p_query(7839); 4 end;
結果:
3.4帶輸入輸出的存儲過程
1 --查詢並打印員工號7839的姓名和薪水 2 --存儲過程,要求:調用的時候傳入員工編號,自動控制打印 3 create or replace procedure p_shuchu(i_empno IN emp.empno%TYPE,o_sal OUT emp.sal%TYPE) as 4 --聲明變量 5 v_ename emp.ename%TYPE; 6 v_sal emp.sal%TYPE; 7 begin 8 SELECT sal INTO o_sal FROM emp WHERE empno = i_empno; 9 --打印變量 10 END ;
調用:
1 DECLARE 2 --聲明變量 3 v_sal emp.sal%TYPE; 4 begin 5 -- Call the procedure 6 7 p_shuchu(7839,v_sal); 8 dbms_output.put_line('薪水:'||v_sal); 9 end;
運行結果: