oracle触发器调试日志,【转】ORACLE触发器的测试

1.翻开并登录pl/sql,File->New->Test

Window;

2.正在出现的窗口中的begin后输进脚本,该语句该当可以或许调用存储过程、函数,或语句能触收触收器;

比如我为某个表users的insert操做创建了触收器,那末test中的语句就是

update TABLE1

年夜概

INSERT TABLE2

寄望sql语句结尾不需供加分号。

3.这时辰假设直接正在测试窗口施行F9,不会进进调试形态,也不会施行上边的插进语句。需供正在trigger左击,选中“添加调试疑息”。

4.

这时F9进进调试形态,隐现trigger创建语句,窗口上边有调试体例的按钮,划分是:运转、逐行调试、跳过方法调试、运转至下个断面、运转至下个异常面。

5.调试过程当中可以或许把鼠标放正在变量上,即可以或许看到变量确当前值。

假设要调试存储过程、方法,可直接左键便有“Test”。

查察变量借可以或许随时正在varible List中输进我们念查察的变量,回车,即可看到。

寄望 这个 要供 ORACLE 为8.17I 版本以上的

借有一个调试方法是 将TIRIGER中 BEGIN 开初的部门做一个存储过程

然后测试 这个存储过程

create or replace procedure test_bal_ic_total(store_no number,

ref_no number,

total_net_amnt number,

net_amnt number,

appr_date date,

automatic number) is

begin

DECLARE

vstore_no number(2);

vref_no number(6);

vtotal_net_amnt number(15, 2);

vnet_amnt number(15, 2);

vappr_date date;

vautomatic number(1);

vcheckflag number(1);

vord_no number(6);

vord_year varchar2(4);

updatenorow exception;

BEGIN

if sqlcode = -1403 then

raise updatenorow;

end if;

vstore_no := store_no;

vref_no := ref_no;

vtotal_net_amnt := total_net_amnt;

vnet_amnt := net_amnt;

vappr_date := appr_date;

vautomatic := automatic;

if (vautomatic = 0) then

vcheckflag := 3;

else

vcheckflag := 2;

end if;

select ord_no, to_char(ord_date, "yyyy")

into vord_no, vord_year

from orders

where (store_no, ord_no) in

(select store_no, ord_no

from ord_ref

where store_no = vstore_no

and ref_no = vref_no);

update bal_ic_total

set perc = decode(round((vtotal_net_amnt - vnet_amnt) * 100 /

vnet_amnt,

2),

14.94,

14.943,

round((vtotal_net_amnt - vnet_amnt) * 100 /

vnet_amnt,

0)),

amount_vat = vtotal_net_amnt - vnet_amnt,

ic_total_net_amnt = vtotal_net_amnt,

diff_total_net_amnt = ord_total_net_amnt - vtotal_net_amnt,

checkflag = vcheckflag,

appr_date = vappr_date

where store_no = vstore_no

and ord_no = vord_no

and ord_total_net_amnt >= 0

and checkflag != 4

and ord_year = vord_year

and flag = 0;

exception

when updatenorow then

null;

when others then

dbms_output.put_line(to_char(sqlcode));

END;

end test_bal_ic_total;

测试 这个过程,那末 把变量 带进即可以或许 测试

cfdfbf3c030d5607182d9d5cfd6a993c.gif>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值