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