基於oracle 的PL/SQL編程 - 存儲過程


接上篇,游標使用的語句,相當於一段匿名的函數,窗口關閉了就不存在了。如果想要窗口關閉了,還能繼續執行那段代碼,就需要存儲過程了: PLSQL是指一個個PLSQL的業務處理過程存儲起來進行復用,這些被存儲起來的PLSQL程序稱之為存儲過程。

語法:

plsql如何創建存儲過程:

1.  一個簡單的存儲過程,存儲過程名稱為 p_hello

1 create or replace procedure p_hello is
2 --如果需要,在此處聲明變量
3 begin
4   dbms_output.put_line('hello world'); 
5 end p_hello;
6 -- 寫完點擊執行,這段語句會被存儲起來

注意,上面存儲過程中 is  關鍵字可以換成as 關鍵字,一樣的效果

存儲過程的調用:打開一個測試窗口,在begin 和end之間寫上存儲過程名,然后點擊執行,就是調用了一次存儲過程

   執行結果:

1 begin
2   -- Call the procedure
3   p_hello;
4 end;

 2.帶入參存儲過程:

 1 --查詢並打印某個員工的姓名,薪水,要求調用時傳入員工編號,控制台自動打印
 2 create or replace procedure p_empInfo(i_empno IN emp.empno%TYPE) as
 3   --聲明變量
 4   v_ename emp.ename%TYPE;
 5   v_sal   emp.sal%TYPE;
 6 begin
 7   select ename, sal into v_ename, v_sal from emp where empno = i_empno;
 8   dbms_output.put_line('員工編號:' || i_empno || ',姓名:' || v_ename || ',薪水:' || v_sal);
 9 
10 end p_empInfo;

寫完點擊執行,編譯該存儲過程。

調用:打開一個測試窗口,

1 -- 調用帶入參存儲過程
2 begin
3   p_empInfo(7839);
4   p_empInfo(7902);
5 end;

結果:

3. 帶入參及返回值的存儲過程:輸入員工號查詢某個員工(7839)信息,要求將薪水作為返回值輸出,給調用的程序使用,比如java 程序,c# .net程序等

 

1 --輸入員工號查詢某個員工(7839)信息,要求講薪水作為返回值輸出,給調用的程序使用
2 create or replace procedure p_empInfo2(i_empno IN emp.empno%TYPE, o_sal out emp.Sal%TYPE) as
3 
4 begin
5   select sal into o_sal from emp where empno = i_empno;
6   
7 end p_empInfo2;

 

在測試窗口中調用該存儲過程,需要事先定義一個變量作為 存儲過程返回值的接收參數,在打印語句中打印該參數的值,執行該語句, 輸出結果5000.00 

1 -- Created on 2018/6/3 by ADMINISTRATOR 
2 declare 
3   
4   v_sal emp.sal%TYPE;
5 begin
6   p_empInfo2(7839,v_sal);
7   dbms_output.put_line(v_sal);
8     
9 end;

 


免責聲明!

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



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