存储过程1----包体的写法

本文介绍了一个简单的PL/SQL存储过程示例,包括如何在包(package)及其主体(package body)中定义及实现函数。通过具体代码讲解了参数传递、异常处理等关键概念。

由于项目中用到过一些存储过程,以前都是别人写。自己只管调用获得返回值。现在清闲,没事研究下。

Packages里面就是封装好的存储过程。由package和package body组成。每当创建一个包的时候,就分别创建了这2个。其中package是暴露给我们外面可以用的。package body里面除了有外面可以用的方法的实体。还可以写一些自己内部的工具类。

我自己写了一个最简单地的存储过程。代码如下:

这是写在package里面的。
create or replace package TASK_TEST is

  function Add(i_name varchar2 , i_id varchar2)return varchar2;

end TASK_TEST;

这是写在package body里面的。
create or replace package body TASK_TEST is

   function Add(i_name varchar2 , i_id varchar2)return varchar2 as pragma autonomous_transaction;
     v_state varchar2(32767);
     v_name varchar2(32767);
     v_id varchar(32767);
   begin
   v_name:=i_name || '_temp';
   v_id:=i_id || '_temp';
   insert into temp_table(REND_NUM,TEMP_NAME,ID)
   values(1,v_name,v_id)
   returning v_id into v_state;
   commit;
   return v_state;
    exception
    when others
    then return -1;
   end;
  
end TASK_TEST;

创建的时没有什么太大的区别。但是需要注意的是。暴露给外面可以调用的必须和里面的实体一模一样。也就是说,对于这个存储过程来说,package body的add方法的as前面的必须和package一样,否则编译会抱错。入参是只读的。如果在里面需要做处理,必须另外写一个内部参数来处理。至于语法。。。。小弟学功甚浅,目前还没研究透。不过基本思路和sql差不多。有sql的基础,相信这个也不难。需要注意的是:每行结尾需要分号";",每个函数结尾都有"end;";,每个"if"对应一个"end if;".也就是一一对应的关系吧.其他好像没啥了.语法什么的,摆渡一下就什么都知道了. 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值