Oracle函数,包和pl/sql块编程实例
一:函数是用于返回特定的数据。
函数案例1:输入雇员姓名,返回该雇员的年薪。
create function sp_fun2(spname varchar2) return
number is yearsal number(7,2);--返回一个number类型值,具体大小是number(7,2),名字是yearsal,具体类型值。
begin
select sal*12+nvl(comm,0)*12 into yearsal from emp//防止为空。
where ename=spname;
return yearSal;
end;
函数调用:
(1)SQL>var income number;--定义变量;
(2)SQL>call sp_fun2('SCOTT') into :income;--调用函数into给这个值
(3)SQL>print income;--打印一下。
二:包:包用于逻辑上组合过程和函数,他有包规范和包体两部分组成。(1)创建包规范:
create package sp_package is
procedure update_sal (name varchar2,newsal number); function annual_income(name varchar2) return number; end;
/
注释:创建一个包,声明该包包含一个sp_pro2过程和一个sp_fun2函数。
包规范只包含函数和过程的说明。但是没有过程和函数的实现代码,包体用于实现包规范中的过程和函数。
组合:
.
(2)创建包体:给包sp_package实现包体。
如下:
create or replace package body sp_package is
procedure update_sal(name varchar2,newsal number)
is
begin
update emp set sal=newsal where ename=name;
end;
function annual_income(name varchar2)
return number is