1、作用 a、在開發(fā)中,為了一個特定的業(yè)務功能,會向數(shù)據(jù)庫進行多次連接關閉(連接和關閉是很耗資源),需要對數(shù)據(jù)庫進行多次I/O讀寫,性能比較低。如果把這些業(yè)務放入 存儲過程中,就可以做到連接關閉一次數(shù)據(jù)庫就可以實現(xiàn)業(yè)務,可以大大的提高效率。 b、Oracle官方建議,能夠讓數(shù)據(jù)庫操作的不要放在程序中,在數(shù)據(jù)庫中實現(xiàn)基本上不會出現(xiàn)錯誤,在程序中操作可能會存在錯誤。(如果在數(shù)據(jù)庫中操作,可以有一定 的日志恢復功能。) 2、語法 CREATE OR REPLACE PROCEDURE 存儲過程名稱[(參數(shù)列表)] IS BEGIN END 存儲過程名稱; ? 根據(jù)參數(shù)的類型,可以分為3類 a、不帶參數(shù) b、帶輸入?yún)?shù) c、帶輸入輸出參數(shù)(返回值) 3、無參存儲 ![]() create or replace procedure p_hello as --聲明變量 begin dbms_output.put_line('Hello World!'); end p_hello ;View Code ? 調用 在plsql中可以直接在begin end中直接寫存儲過程名,或者在命令窗口中執(zhí)行 exec 存儲過程名;。 注意: a、is和as是可以相互用的 b、過程中沒有declare關鍵字,declare用在語句塊中 4、帶輸入?yún)?shù)存儲 ![]() create or replace procedure p_queryName(i_empno in emp.empno%type) as --聲明變量 v_name emp.ename%type; v_sal emp.sal%type; begin --查詢emp表中對應員工的信息 select ename,sal into v_name,v_sal from emp where empno=i_empno; dbms_output.put_line('名稱:'||v_name||'薪水:'||v_sal); end p_queryName;View Code 5、帶輸入輸出參數(shù)存儲 ![]() create or replace procedure p_querySalOut(i_empno in emp.empno%type,o_sal out emp.sal%type) as --聲明變量 begin --查詢emp表中對應員工的信息 select sal into o_sal from emp where empno=i_empno; dbms_output.put_line('名稱:'||v_name||'薪水:'||v_sal); end p_querySalOut;View Code ?調用 ![]() declare --聲明變量接受存儲過程中的輸出參數(shù) v_sal emp.sal%type; begin p_querySalOut(7839,v_sal); dbms_output.put_line(v_sal); end;View Code ? 來源:https://www./content-2-491751.html |
|