函数与程序包

/*
  函数与程序包(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;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值