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;
、
测试 这个过程,那末 把变量 带进即可以或许 测试
>