------- Windows Phone 7手机开发、.Net培训、期待与您交流! -------
1. oracle procedure-存储过程
示列:
create or replace procedure update_sal(name varchar2,newsal number)
IS
begin
update emp set sal = newsal where lower(ename)=lower(name);
end;
/
个人理解:
存储过程在java或者C#语言中就是一个没有范围值得方法。(void)
public void update_sal(string name,double newsal){
//do what your want 做写要做的事.
}
2.Function-函数
示列:
create or replace function annual_income(name varchar2) return number
IS
annual_salary number(7,2);
begin
select sal*12+nvl(comm,0) into annual_salary from emp where lower(ename)=lower(name);
return annual_salary;
end;
/
个人理解:
函数在java或者C#语言中就是一个有范围值得方法。(返回类型)
public double annual_income(string name){
//do what your want 做写要做的事.
return ....;
}
3.package-包
示列:
create package emp_pkg is
function annual_income(name varchar2) return number;
procedure update_sal(name varchar2,newsal number);
end;
/
个人理解:
包体得定义部分,就是java或C#中的接口。之定义接口方法,不实现
create package body emp_pkg is
procedure update_sal(name varchar2,newsal number)
is
begin
update emp set sal = newsal where lower(ename)=lower(name);
end;
function annual_income(name varchar2) return number is
annual_salary number(7,2);
begin
select sal*12+nvl(comm,0) into annual_salary from emp where lower(ename)=lower(name);
return annual_salary;
end;
end;
包体部分是接口的实现。
这样我们就可以通过 emp_pkg.update_sal或者emp_pkg.annual_income 来调用一个业务逻辑里面的方法,也体现了封装的特性。(包名.存储过程||函数)。
以上纯属个人理解,方便学习,如果有不妥之处,还望大师指点。