oracle存儲過程(帶參數的存儲過程)


 
          
帶參數的存儲過程

舉例:為指定的員工漲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

 


免責聲明!

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



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