PLSQL有类似于JAVA中的接口的包,包的好处就是方便管理与理解,
并且对于学习JAVA的人来说,基本没有语方法上的障碍,一看就知道
是这么个东西,也好理解。
下面是一个示例:
--需要的表:
- create table test(tid number,tname varchar(50));
create table test(tid number,tname varchar(50));
-------------------------创建一个包-------------------------
--先建包头,类似于JAVA中的接口,只能够声明,不能够在这里实现
--所有的实现都在包体里面
- create or replace package test_pkg
- as
- procedure add(l_tid in number,l_tname in varchar2);
- procedure del(l_tid in number);
- end test_pkg;
create or replace package test_pkg
as
procedure add(l_tid in number,l_tname in varchar2);
procedure del(l_tid in number);
end test_pkg;
--建立包体
- create or replace package body test_pkg
- as
- --该方法没有在包里面定义,相当于是私有方法,不能够被外界调用,
- --只能够被包内的方法调用。
- function check_tid(l_tid in number)
- return boolean
- as
- begin
- if l_tid>0 then
- return true;
- else
- return false;
- end if;
- end;
- --实现包内方法
- procedure add(l_tid in number,l_tname in varchar2)
- as
- begin
- if check_tid(l_tid)=true then
- insert into test(tid,tname) values(l_tid,l_tname);
- else
- dbms_output.put_line('ID要大于0!');
- end if;
- end;
- procedure del(l_tid in number)
- as
- begin
- delete from test where tid=l_tid;
- end;
- end test_pkg;
create or replace package body test_pkg
as
--该方法没有在包里面定义,相当于是私有方法,不能够被外界调用,
--只能够被包内的方法调用。
function check_tid(l_tid in number)
return boolean
as
begin
if l_tid>0 then
return true;
else
return false;
end if;
end;
--实现包内方法
procedure add(l_tid in number,l_tname in varchar2)
as
begin
if check_tid(l_tid)=true then
insert into test(tid,tname) values(l_tid,l_tname);
else
dbms_output.put_line('ID要大于0!');
end if;
end;
procedure del(l_tid in number)
as
begin
delete from test where tid=l_tid;
end;
end test_pkg;
-------------------------创建包完成-------------------------
- --测试示例
- begin
- test_pkg.add(0,'testPKG');--报错
- end;
- begin
- test_pkg.add(3,'testPKG');--正确
- end;
- begin
- test_pkg.del(3);--删除
- end;
- select * from test;--查看