oracle 触发器冒号,触发器if else写法 oracle触发器
故事是这样的,这边有个项目是我们的项目经理写的项目,但是有些功能还是需要外包去做,然后外包做好了,却对项目经理的数据库不了解,然后就想了下,让我去做触发器来适配他们,让外包插入数据到他们的表的时候触发事件到我项目经理的表里去,这里的触发是如果项目经理的表有数据,就修改数据,如果没有就插入数据,效果类似merge,也不晓得究竟能用不.唉不管了,简单的写了一下 。
关键还是if else的写法,开始的时候写,老报错,苦恼了一段时间,我就纳闷,我写个触发器连if else都不会,以后还搞什么,然后各种百度,无奈还是没解决,就拼运气上群里问问,结果还真解决了…
oracle 的if else 嵌套语法
先建一个变量,注意,是在declare 和 begin 之间写
declare
result number;
begin
if 1>2 then
result = 2;
else
result = 2;
end if;
end;
----------------结果编译出错了…请看下面,编译是正确的!!-------------------------------------------------------------
declare
result number;
begin
if 1>2 then
result := 2;
else
result := 2;
end if;
end;
–发现了什么?对,在等号前加了个冒号,就行了。解释是 直接等于是比较关系 :=才是赋值…
在 if 判断语句 then 的后面加一个 begin 关键字 ,语句中就可以写多行语句了!但是要在语句后面加一个end;
例:
declare
result number;
begin
if 1>2 then begin
select ....
insert ...
update...
end;
else begin
delete....
insert...
select...
end;
end if;
end;
//下面是项目实战的触发器
declare
HISID varchar(64);
DRUGID number(6);
DRUGNAME VARCHAR(32);
dataCount number;
dataCount2 number;
tankNo number;--柜号
tankNoString varchar2(255);
begin
tankNo:= ((to_number(:new.mccode)-1)*195+(:new.mccol-1)*13+:new.mcrow);
SELECT r.DRUGID2 into HISID FROM DRUGNAME r where r.DRUGNAME = :new.GRANULENAME ;
SELECT r.DRUGID into DRUGID FROM DRUGNAME r where r.DRUGNAME = :new.GRANULENAME ;
-- SELECT count(*) into dataCount from Drawer r where r.WCLASS =:new.MCCODE AND r.WROW =:new.MCROW AND r.WCOL = :new.MCCOL;
SELECT count(*) into dataCount from Drawer r where r.WCLASS =:new.MCCODE AND r.DRAWERID= tankNo;
if dataCount>0 then begin
update drawer dr set
dr.drugid = DRUGID,
dr.DRID=:new.granulecode,
dr.drugid2=HISID
where dr.DRAWERID = tankNo AND dr.WROW =:new.MCROW and dr.WCOL = :new.MCCOL ;
end;
else begin --
if tankNo <10 then begin
tankNoString:='S00'||tankNo;
INSERT INTO DRAWER(DRAWERID,WCLASS,WCOL,WROW,DRUGID,DRID,DRUGID2)
VALUES(tankNo,:new.mccode,:new.mccol,:new.mcrow,DRUGID,tankNoString,HISID);
end;
end if;
if (tankNo <100 and tankNo >10 ) then begin
tankNoString:='S0'||tankNo;
INSERT INTO DRAWER(DRAWERID,WCLASS,WCOL,WROW,DRUGID,DRID,DRUGID2)
VALUES(tankNo,:new.mccode,:new.mccol,:new.mcrow,DRUGID,tankNoString,HISID);
end;
end if;
if (tankNo <1000 and tankNo >100 ) then begin
tankNoString:='S'||tankNo;
INSERT INTO DRAWER(DRAWERID,WCLASS,WCOL,WROW,DRUGID,DRID,DRUGID2)
VALUES(tankNo,:new.mccode,:new.mccol,:new.mcrow,DRUGID,tankNoString,HISID);
end;
end if;
end;
end if;
end;
如果你认真看了,你就会发现,下面我有3个if判断语句都没有用 else if,不是我不用,是用了会报错,如果哪位兄弟知道了怎么使用,请给我留言.谢谢
oracle 触发器冒号,触发器if else写法 oracle触发器相关推荐
- oracle dml触发器写法,Oracle DML类型触发器
Oracle DML类型触发器是Oracle开发过程中最常用和最常见的触发器,主要用于DML操作,例如: 插入,删除,更新操作事件触发器. 由DML类型触发器安装的事件触发前后和数据触发器的类型可以分 ...
- oracle 触发器登录,【学习笔记】Oracle触发器 实现指定用户登录oracle案例
天萃荷净 触发器实现指定用户登录oracle,分享一篇关于Oracle数据库安全策略,通过Oracle触发器实现限定user用户登录Oracle数据库的方法 1.创建允许登录用户表 CREATE TA ...
- Oracle入门(十四.19)之触发器简介
一.触发器的需求 让我们从一个例子开始吧:一条业务规则规定,只要员工的工资发生变化,变更就必须记录在日志记录表中. 可以创建两个过程来执行此操作: UPD_EMP_SAL更新工资,LOG_SAL_CH ...
- 使用plsql创建oracle,在Oracle下使用PLSQL Developer创建简单的触发器
环境:PLSQL Developer 7.1.5 + Oracle 11.2.0 问题:在Oracle下使用PLSQL Developer创建简单 的触发器. 解决: 步骤一:在PLSQL Devel ...
- oracle 的自增需要依靠序列和触发器共同实现
oracle的自增需要依靠序列和触发器共同实现 比如 先创建一个表 create table test (id int primary key, name varchar2(10)); 创建一个序列 ...
- Oracle 创建表、定义序列以及创建触发器
Oracle 创建表.定义序列以及创建触发器 1. 定义序列 CREATE SEQUENCE <序列名>[MAXVALUE N|NOMAXVALUE][MINVALUE N|NOMINVA ...
- oracle dml触发器 获取当前执行sql语句,Oracle DML触发器
DML触发器的要点 DML触发器是定义在表上的触发器,由DML事件引发.编写DML触发器的要素是: * 确定触发的表,即在其上定义触发器的表. * 确定触发的事件,DML触发器的触发事件有INSERT ...
- oracle语句加减,oracle时间加减的语句写法
oracle时间加减运算我们经常会用到,下面就为您介绍oracle时间加减的实现方法,如果您遇到过oracle时间加减的问题,不妨一看. 加法 select sysdate,add_months(sy ...
- 手写oracle分页,oracle分页代码(超简略写法)
当前位置:我的异常网» 数据库 » oracle分页代码(超简略写法) oracle分页代码(超简略写法) www.myexceptions.net 网友分享于:2013-09-26 浏览:5次 ...
- oracle的存储过程写法Oracle中如何写存储过程
Oracle的存储过程基本写法 Oracle存储过程简介: 存储过程是事先经过编译并存储在数据库中的一段SQL语句的集合,调用存储过程可以简化应用开发人员的很多工作,减少数据在数据库和应用服务 ...
最新文章
- 程序分析的一些概念总结
- 运维企业专题(9)RHCS集群工具介绍
- 让植物“张嘴说话”!新加坡“植物机器人”可成为环境探测器促进农业生产...
- Android的开机流程
- Sql Server2005一則怪現象
- AtCoder Regular Contest 098
- Nginx学习之五:Nginx第三方模块
- hive 自定义元数据表_Hive分区表和桶表的使用
- Taro+react开发(16)--跳转拿参
- Python二级笔记(5)
- angularjs的基础知识
- java 浅克隆_(Java)浅克隆与深克隆的区别
- 全面的framebuffer详解一
- 证券计算机行业研究,20210630-首创证券-计算机行业深度报告:物联网,研究框架.pdf...
- DB2 表的常用命令
- Android开发:申请小米开发者账号步骤
- Android个人日常消费理财_财务软件
- Python(求第五个人岁数)
- Windows/Linux内核地址空间管理的异同
- 微信小程序 接入第三方地图