/*
函数与程序包(function and package)
子程序=函数+存储过程
程序包:相当JAVA里面的类。可以封装,子程序,游标,公用常量
函数:
总结;
过程与函数的不同
过程。可以输出0~n个。函数必须返回一个
调用方式不同。过程是可以单独调用。函数不是单独使用。只能是SQL语句一部分
程序包。进一步体现封装的思想。隐藏代码实现的细节;
由规范与主体构成(包头,包体)
*/
--定义一个函数语法
-- 一定写二个return
create or replace function fun1(a int) return varchar2
is
v varchar2(20);
begin
select bname into v from book where bid=a;
return v;
end;
select * from book;
--使用函数
select fun1(1102) from dual;
--程序包
语法
--定义规范
--对外声明,是可见,
create or replace package pack1
is
procedure proc1(a number ,b out varchar2);
function fun1(a number) return varchar2;
end pack1;
--定义主体。
--实现规范的具体功能。对外是不可见的黑盒
create or replace package body pack1
is
procedure proc1(a number ,b out varchar2)
is
v varchar2(20);
begin
select bname into v from book where bid=a;
b:=v;
end proc1;
function fun1(a number) return varchar2
is
v varchar2(20);
begin
select bname into v from book where bid=a;
return v;
end fun1;
end pack1;
--程序包的调用
select pack1.fun1(1102) from dual;
declare
a int;
b varchar2(40);
begin
a:=&书的编号;
pack1.proc1(a,b);
dbms_output.put_line('书名:'||b);
end;
函数与程序包(function and package)
子程序=函数+存储过程
程序包:相当JAVA里面的类。可以封装,子程序,游标,公用常量
函数:
总结;
过程与函数的不同
过程。可以输出0~n个。函数必须返回一个
调用方式不同。过程是可以单独调用。函数不是单独使用。只能是SQL语句一部分
程序包。进一步体现封装的思想。隐藏代码实现的细节;
由规范与主体构成(包头,包体)
*/
--定义一个函数语法
-- 一定写二个return
create or replace function fun1(a int) return varchar2
is
v varchar2(20);
begin
select bname into v from book where bid=a;
return v;
end;
select * from book;
--使用函数
select fun1(1102) from dual;
--程序包
语法
--定义规范
--对外声明,是可见,
create or replace package pack1
is
procedure proc1(a number ,b out varchar2);
function fun1(a number) return varchar2;
end pack1;
--定义主体。
--实现规范的具体功能。对外是不可见的黑盒
create or replace package body pack1
is
procedure proc1(a number ,b out varchar2)
is
v varchar2(20);
begin
select bname into v from book where bid=a;
b:=v;
end proc1;
function fun1(a number) return varchar2
is
v varchar2(20);
begin
select bname into v from book where bid=a;
return v;
end fun1;
end pack1;
--程序包的调用
select pack1.fun1(1102) from dual;
declare
a int;
b varchar2(40);
begin
a:=&书的编号;
pack1.proc1(a,b);
dbms_output.put_line('书名:'||b);
end;