-- 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触发器例子相关推荐

  1. oracle触发器高级教程

    [转自]http://download.oracle.com/docs/cd/B19306_01/server.102/b14200/statements_7004.htm#i2153503 CREA ...

  2. oracle行级的触发器,Oracle触发器Trigger2行级

    create table trigger_t2( id int, name varchar(30), age int ); /* --创建一个before update的触发器-控制每一行,行级 -- ...

  3. oracle触发器报错语法,Oracle 触发器

    Oracle触发器是使用者对Oracle数据库的对象做特定的操作时,触发的一段PL/SQL程序代码,叫做触发器.触发的事件包括对表的DML操作,用户的DDL操作以及数据库事件等. 一.触发器的作用 O ...

  4. oracle中触发器的创建,Oracle触发器创建及其功能

    Oracle触发器创建及其功能 下面的文章主要介绍的是如何创建Oracle触发器,同时介绍了Oracle触发器的功能.语法,而且通过具体的例子可以让大家更深入的`掌握. 1.创建表t1 :create ...

  5. oracle 停止触发器语句,oracle触发器语句

    ORACLE中触发器的判断IF语句 加一行 NULL 即可例如:SQL> DECLARE 2 testvalue INT; 3 BEGIN 4 testvalue := 200; 5 6 IF ...

  6. Oracle 触发器调用存储过程|转||待研究|

    Oracle触发器调用存储过程资料收集整理 触发器:Trigger 存储过程:Stored Procedure // ******************** 收集1 **************** ...

  7. java代码连接oracle数据库连接_在JAVA中连接Oracle数据库(例子)

    * TODO 要更改此生成的文件的模板,请转至 * 窗口 - 首选项 - java - 代码样式 - 代码模板 */ package person.fane.test; import java.sql ...

  8. SQL server与Oracle触发器的创建与使用

    SQL Server 1创建触发器 GO BEGIN IF (object_id('WMY', 'tr') is not null) DROP trigger WMY END; GO CREATE T ...

  9. oracle触发器 select into,Oracle触发器中selectinto报错no_data_found异常处理

    Oracle触发器中select into 报错no_data_found异常处理 红色部分为对查询不到数据异常的处理 create or replace trigger TIG_MONITOR_AL ...

最新文章

  1. 双12众商超沦陷,你是否习惯了扮演观众?
  2. Java多线程(5)--线程通信wait和notify
  3. Python 位操作运算符
  4. java静态变量,静态代码块,普通代码块,构造函数加载顺序
  5. 【剑指offer】面试题24:反转链表(Java 实现)
  6. 一文看懂边缘云在广电行业的应用
  7. 信息学奥赛一本通C++语言——1011: 甲流疫情死亡率
  8. android实现超酷的腾讯视频首页和垂直水平网格瀑布流一揽子效果
  9. 区块链的5大安全风险
  10. Flutter 成功在鸿蒙上运行;微信 8.0 发布;支付宝和微信支付达到反垄断标准 | 极客头条...
  11. 在 Linux 的应用中测试中的延时和丢包模拟
  12. 相关不是因果,哪又是啥?
  13. Android 模拟机键盘不可用的问题 !!
  14. C++输出九九乘法表
  15. MFC 之序列化 serialize 和CArchive
  16. 如何选择适合的大数据分析软件
  17. 格子玻尔兹曼机(Lattice Boltzmann Method)系列5:LBM多相流实例之Shan-Chen模型
  18. android画布裁剪圆角,Android 视图圆角化处理方案
  19. 微信中无法直接下载棋牌游戏类app的解决办法
  20. VC中自定义IE浏览器

热门文章

  1. Java编程练习之:有关兔子的斐波那契数列问题解析
  2. html5地区下拉菜单,JS特效:地区下拉菜单
  3. 一文了解主流在线公共 MQTT 服务器
  4. Tecnomatix | Process Designer (PD)的一点使用心得
  5. 关于数据冗余的一点思考
  6. Android简易登录界面
  7. spring-boot使用两个数据库mysql 和 sqlserver
  8. 杨强:从大数据到人工智能
  9. 【工具】MATLAB一键转为python
  10. java代码编写出现的陷阱-2:阴沟里翻船