Oracle触发器例子
-- set serveroutput on
create or replace TRIGGER check_out_jiecun_trigger
before UPDATE -- 更新当前表的字段时,里只能 before, 不能 after; 否则会报ORA-04084:无法更改此触发器类型的新值
ON check_out
for each row
DECLARE-- 声明使用自治事务(触发器里引用了被触发的表,解决方案就是用自治事务.注意业务代码后的 commit.)-- 报错参考: ORA-04091: 发生了变化, 触发器/函数不能读它pragma autonomous_transaction;pv_res varchar2(255);pn_last_jiecun number; -- 上期结存pi_cnt_id int; -- 合同id
BEGINpi_cnt_id := :old.contract_id;pv_res := '查询上期结存, pi_cnt_id: '||pi_cnt_id;dbms_output.put_line(pv_res);select nvl(max(p.jie_cun), 0) into pn_last_jiecunfrom (select c.bid_amount as jie_cun, row_number() over(order by c.id desc) as rn -- 按id倒序生成序号from check_out cwhere c.contract_id=pi_cnt_idand c.id<:old.id -- 当期之前的数据and c.status=2 and c.reverse_Status=1) pwhere p.rn=1;pv_res := '更新结存 '||sysdate||' pn_last_jiecun: '||pn_last_jiecun;dbms_output.put_line(pv_res);:new.bid_Amount := case when (:old.SALE_AMOUNT+pn_last_jiecun)>nvl(:old.REAL_PAY_AMOUNT,0) then -mod(-(:old.SALE_AMOUNT+pn_last_jiecun) + nvl(:old.REAL_PAY_AMOUNT,0),100) else :old.SALE_AMOUNT + pn_last_jiecun - nvl(:old.REAL_PAY_AMOUNT,0) end;-- 自治事务手动提交 COMMIT;
end;
Oracle触发器例子相关推荐
- oracle触发器高级教程
[转自]http://download.oracle.com/docs/cd/B19306_01/server.102/b14200/statements_7004.htm#i2153503 CREA ...
- oracle行级的触发器,Oracle触发器Trigger2行级
create table trigger_t2( id int, name varchar(30), age int ); /* --创建一个before update的触发器-控制每一行,行级 -- ...
- oracle触发器报错语法,Oracle 触发器
Oracle触发器是使用者对Oracle数据库的对象做特定的操作时,触发的一段PL/SQL程序代码,叫做触发器.触发的事件包括对表的DML操作,用户的DDL操作以及数据库事件等. 一.触发器的作用 O ...
- oracle中触发器的创建,Oracle触发器创建及其功能
Oracle触发器创建及其功能 下面的文章主要介绍的是如何创建Oracle触发器,同时介绍了Oracle触发器的功能.语法,而且通过具体的例子可以让大家更深入的`掌握. 1.创建表t1 :create ...
- oracle 停止触发器语句,oracle触发器语句
ORACLE中触发器的判断IF语句 加一行 NULL 即可例如:SQL> DECLARE 2 testvalue INT; 3 BEGIN 4 testvalue := 200; 5 6 IF ...
- Oracle 触发器调用存储过程|转||待研究|
Oracle触发器调用存储过程资料收集整理 触发器:Trigger 存储过程:Stored Procedure // ******************** 收集1 **************** ...
- java代码连接oracle数据库连接_在JAVA中连接Oracle数据库(例子)
* TODO 要更改此生成的文件的模板,请转至 * 窗口 - 首选项 - java - 代码样式 - 代码模板 */ package person.fane.test; import java.sql ...
- SQL server与Oracle触发器的创建与使用
SQL Server 1创建触发器 GO BEGIN IF (object_id('WMY', 'tr') is not null) DROP trigger WMY END; GO CREATE T ...
- oracle触发器 select into,Oracle触发器中selectinto报错no_data_found异常处理
Oracle触发器中select into 报错no_data_found异常处理 红色部分为对查询不到数据异常的处理 create or replace trigger TIG_MONITOR_AL ...
最新文章
- 双12众商超沦陷,你是否习惯了扮演观众?
- Java多线程(5)--线程通信wait和notify
- Python 位操作运算符
- java静态变量,静态代码块,普通代码块,构造函数加载顺序
- 【剑指offer】面试题24:反转链表(Java 实现)
- 一文看懂边缘云在广电行业的应用
- 信息学奥赛一本通C++语言——1011: 甲流疫情死亡率
- android实现超酷的腾讯视频首页和垂直水平网格瀑布流一揽子效果
- 区块链的5大安全风险
- Flutter 成功在鸿蒙上运行;微信 8.0 发布;支付宝和微信支付达到反垄断标准 | 极客头条...
- 在 Linux 的应用中测试中的延时和丢包模拟
- 相关不是因果,哪又是啥?
- Android 模拟机键盘不可用的问题 !!
- C++输出九九乘法表
- MFC 之序列化 serialize 和CArchive
- 如何选择适合的大数据分析软件
- 格子玻尔兹曼机(Lattice Boltzmann Method)系列5:LBM多相流实例之Shan-Chen模型
- android画布裁剪圆角,Android 视图圆角化处理方案
- 微信中无法直接下载棋牌游戏类app的解决办法
- VC中自定义IE浏览器