select * from emp;
-----------------存儲(chǔ)過程------------------------
--定義
create[or replace] procedure 存儲(chǔ)過程名稱(參數(shù)名 [in]/out 數(shù)據(jù)類型)
is/as
begin
--邏輯表達(dá)式
end [存儲(chǔ)過程名稱];
--定義存儲(chǔ)過程計(jì)算年薪,并答應(yīng)輸出
create or replace procedure proc_salyears(v_no in number)
is
sal_years number(9,2);
begin
--計(jì)算年薪
select sal*12+nvl(comm,0) into sal_years from emp where empno=v_no;
--輸出
dbms_output.put_line(sal_years);
end;
--調(diào)用存儲(chǔ)過程
方式1:
call proc_salyears(7788);
方式2:
begin
proc_salyears(7369);
end;
--out參數(shù)的存儲(chǔ)過程
--計(jì)算年薪并返回
create or replace procedure proc_salyears(v_no in number,sal_years out number)
is
begin
--計(jì)算年薪
select sal*12+nvl(comm,0) into sal_years from emp where empno=v_no;
end;
--調(diào)用存儲(chǔ)過程
declare
v_sal number(9,2);
begin
proc_salyears(7876,v_sal);
dbms_output.put_line(v_sal);
end;
-----------------存儲(chǔ)函數(shù)------------
--定義
create or replace function 存儲(chǔ)函數(shù)名(參數(shù)名 in/out 數(shù)據(jù)類型)
return 數(shù)據(jù)類型
is|as
begin
return 具體的數(shù)據(jù);
end [存儲(chǔ)函數(shù)名稱];
--定義存儲(chǔ)函數(shù)名計(jì)算年薪
create or replace function fun_salyears(f_no number)
return number
is
sal_years number(9,2);
begin
select sal*12+nvl(comm,0) into sal_years from emp where empno=f_no;
return sal_years;
end ;
--使用存儲(chǔ)函數(shù)
declare
sal_yeats number(9,2);
begin
sal_yeats := fun_salyears(7876);
dbms_output.put_line(sal_yeats);
end;
--可簡(jiǎn)寫
begin
dbms_output.put_line(fun_salyears(7369));
end;
--------存儲(chǔ)過程和存儲(chǔ)函數(shù)的區(qū)別--------
存儲(chǔ)過程多用于項(xiàng)目之間的數(shù)據(jù)共享,存儲(chǔ)函數(shù)多被存儲(chǔ)過程調(diào)用.
存儲(chǔ)函數(shù)可以再sql語句中調(diào)用,存儲(chǔ)過程不能.
您可能感興趣的文章:- oracle 存儲(chǔ)過程、函數(shù)和觸發(fā)器用法實(shí)例詳解
- windows中oracle存儲(chǔ)過程加密的實(shí)例代碼
- Oracle帶輸入輸出參數(shù)存儲(chǔ)過程(包括sql分頁功能)
- oracle中print_table存儲(chǔ)過程實(shí)例介紹
- Mybatis調(diào)用Oracle存儲(chǔ)過程的方法圖文詳解
- 詳解Oracle調(diào)試存儲(chǔ)過程
- Oracle存儲(chǔ)過程及調(diào)用
- Oracle存儲(chǔ)過程、包、方法使用總結(jié)(推薦)
- Oracle生成單據(jù)編號(hào)存儲(chǔ)過程的實(shí)例代碼
- Oracle數(shù)據(jù)庫創(chuàng)建存儲(chǔ)過程的示例詳解