PLSQL--存儲過程


  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;

運行結果:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM