n 包
包用于在逻辑上组合过程和函数,它由包规范和包体两部分组成。
为什么需要包:使用包可以更好的管理自己写的函数、过程
①我们可以使用create package命令来创建包:
|
包的规范只包含了过程和函数的说明,但是没有过程和函数的实现代码。包体用于实现包规范中的过程和函数。
请编写一个包,该包有一个过程,该过程可以接收用户名和新的薪水,将来用于通过用户名去更新薪水;还有一个函数,该函数可以接收一个用户名,将来要实现得到用户的年薪是多少
create or replace package mypackage1 is
procedure pro1(v_in_ename varchar2,v_in_newsal number);
function fun1(v_in_ename varchar2) return number;
end;
②建立包体可以使用create package body命令
|
SQL> create or replace package body mypackage1 is
2 procedure pro1(v_in_ename varchar2,v_in_newsal number) is
3 begin
4 update emp set sal=v_in_newsal where ename=v_in_ename;
5 end;
6 function fun1(v_in_ename varchar2) return number is
7 v_annual_sal number;
8 begin
9 select (sal+nvl(comm,0))*13 into v_annual_sal from emp where ename=v_in_ename;
10 return v_annual_sal;
11 end;
12 end;
13 /
Package body created
③如何调用包的过程或是函数
当调用包的过程或是函数时,在过程和函数前需要带有包名,如果要访问其他方案的,还需要在包名前加方案名。
(1)控制台
|
(2)在java中取调用包下的函数或是过程应当:
String sql="{call scott.mypackage1.pro1(?,?)}";
String sql="select scott.mypackage1.fun1('KING') from dual";
细节:
①包体中药实现的方法或者是过程,应先在包中声明。