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. 总结
因为需要用到,就临时学习了一下存储过程,算是掌握了基本的使用,本文只是根据需求的介绍了一下思路以及简要语法,存储过程的使用,要想彻底掌握,还得多多的去看文档。