帶參數的存儲過程 舉例:為指定的員工漲100元的工資,打印漲前和漲后的工資 如果帶參,需要指定是輸入參數還是輸出參數 create or replace procedure raisesalary(eno in number) as ---定義一個變量保存漲前的薪水,引用emp中sal的類型作為psal的類型 psal emp.sal%type; begin ---得到員工漲前的薪水 select sal into psal from emp where empno=eno; ---給該員工漲100 update emp set sal=sal+100 where empno=eno; ---需不需要commit? ---注意:一般不在存儲過程或者存儲函數中 commit和rollback ---打印漲前和漲后的工資 dbms_output.put_line('漲前:'||psal||'漲后:'||(psal+100)); end; / 一般在調用存儲過程或者函數的時候再commit,這樣可以保證所有執行是在同一個事物中進行的 如: begin raisesalary(7839); raisesalary(7566); commit; end; /
一般不在存儲過程中commit或者rollback,而是在調用存儲過程之后再提交或回滾,這樣能把存儲過程封裝到一個事務中。
如果是命令窗口就用exec 存儲過程名,舉個栗子:
1.如果是命令窗口就用exec 存儲過程名,舉個栗子:
EXEC
procedure
;
--procedure是存儲過程名
2.如果是PL/SQL窗口就用 begin 存儲過程名 end; 舉個栗子:
begin
procedure
;
--procedure是存儲過程名
end
;
3.如果是程序中調用就用 call 存儲過程名 ,舉個栗子:
hibernateDao.excuteSqlUpdate("{Call proc_stuInfo()}");//存儲過程proc_stuInfo