存储过程的简易使用

1.前言

本文主要介绍,在oracle中,对存储过程的使用。

2.需求

假设目前有需求如下:

1.根据传入的两个参数判断,是执行插入还是更新操作

2. p1对应列IdColumnName1为ID主键,p2对应列columnName2

3.

查询主键IdColumnName1的值为p1的记录

当该记录中字段columnName2值为null时,对该记录做更新操作,将值p2更新至该记录的columnName2字段

当该记录中字段columnName2值不为null时,复制该条记录(即做insert操作,插入的值即为原记录,ID自增长或取序列号),之后再把值p2更新至新记录的columnName2字段

3.实现

1. 创建存储过程

       Create or RePlace ProceDure dbName.ProceDureName(
       p1 in tableName.IdColumnName1%TYPE,
       p2 in tableName.columnName2%TYPE) 
   字面意思:创建或者替换数据库实例中,名为ProceDureName的存储过程,输入变量
   p1对应了IdColumnName1,
   p2对应了columnName2

2. 定义执行中的变量

    as v1 varchar2(30);
       v2 integer;
       v3 integer;

3. 执行体

//1.赋值给v2

begin
       select 
           count(*) into v2 
       from 
           tableName 
       where 
               columnName2 is not null 
           and IdColumnName1=p1 dbms_output.put_line(v2);

//2.控制台可打印v2看看

       dbms_output.put_line(v_count);

//3.判断做什么操作

    if 
        v_2=1 
    then 
        v_1:='新增';
     select 
          SEQ_TABLENAME.NEXTVAL into v3
     from 
          dual;
//插入一条数据,与原数据一模一样
     insert into TMP_RULES_T_MONI_170626(....)
    select 
        .... 
    where 
        IdColumnName1=p1 and columnName2=p2;   
//更新这条新数据,把我们的输入的p2更新进去
    update tableName 
    set t1.IdColumnName1=p2 where IdColumnName1=v3;

    elsif 
        v_2=0 
    then 
        v_1:='更新';
    //更新操作
    。。。此处省略一个更新语句。。。。。。。。。
    end if;
    //不要忘记提交
    commit;
    //异常捕捉
      exception
           when others then
              rollback;
    //存储过程结束

    end dbName.ProceDureName;

4. 总结

  因为需要用到,就临时学习了一下存储过程,算是掌握了基本的使用,本文只是根据需求的介绍了一下思路以及简要语法,存储过程的使用,要想彻底掌握,还得多多的去看文档。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值