介绍几个实用的oracle存储过程排查问题测试方法

PL/SQL测试

  • 打开存储过程,点击包头右键选择添加调试信息
    在这里插入图片描述
  • 点击方法头,右键
    在这里插入图片描述
  • 打断点,这里就不截图了,直接在所需要打断点的左边行号处,用鼠标双击即可出来断点标识。
  • 填写入参,然后点击左上角的按钮开始测试,然后使用旁边几个按钮就行调试。
    在这里插入图片描述

存储过程使用了临时表,如何用PL/SQL进行测试

  • 因为临时表是会话级的,只在同一个会话中能看到数据,所以使用了临时表可在调用方法之前,先往该临时表中插入数据进行测试
    在这里插入图片描述

执行了某个方法后,想看下执行成功后所生产的数据。

  • 在我们执行方法测试时,如果未提交,只能在当前窗口的会话中看到,所以可以在同一个会话中,先执行方法,然后再进行查询执行后的数据,看是否符合逻辑预期。
declare
 v_result int; --执行结果
 v_msg varchar2(200); --输出参数
begin
  --插入加工前数据
  Insert Into SaleOrderDtl (line,Vendorcode,Receivercode,Wrhcode,Gdcode,Psrcode,Qpcstr,Qtystr,Qty,Price) 
    Values(1,'v123456','0001','w123','g1001','9999',null,null,7,null);
  --调用加工方法  
  v_result := Pkg_SaleOrder.ON_MODIFY('单号0001','单据类型', '操作人', 目标状态, v_msg);
end;

--查看加工后的数据
select * from SaleOrderDtl;

在执行存储过程中,想看到运行中产生的数据

  • 方法执行的过程中,我们是看不到数据的,这时可能有错误,但是我们不能知道是什么原因造成的,就需要看下运行中的数据来找出错误。
  • 举个例子:在界面操作时,会调用存储过程,但是报错了,我们并不能得知具体哪个地方报错,我们用PL/SQL测的话,可能需要构造很多的数据,非常麻烦,这时就可以运行过程中的数据存下来,查看具体错误原因。
  • 我们需要把数据放到一个表中,所以我们可以构建一个存储过程,用来动态创建表,用完后自行删掉就行了,存储过程如下,需要不同的条件自己加上就行了。
CREATE OR REPLACE Procedure Test_SaveTargetData(piTableName In Varchar2) Is
  v_Prex Varchar2(60);
Begin
  v_Prex := 'test_';
  Begin
    --删除测试表
    execute immediate 'drop table ' || v_Prex || piTableName;
  Exception
    When Others Then
      Null;
  End;
  --创建测试表,并把目标表中的数据放到测试表中
  execute immediate ' create table ' || v_Prex || piTableName ||' as select * from ' || piTableName;
End;
 
  • 用来动态创建表的存储过程的使用,同上名称为Test_SaveTargetData
    在所需的位置,加上该存储过程,并指定表名,重新执行存储过程Pkg_SaleOrder即可,然后在页面上进行操作,操作完后在数据库查询新生成的测试表,这里既是Test_SaleOrderDtl
    在这里插入图片描述

  • 使用运行中产生的数据
    在看了数据之后,可能还需要配合存储过程一块使用,这时把测试表Test_SaleOrderDtl的数据插入到SaleOrderDtl即可,在调试存储过程就可以用到这些数据,如果SaleOrderDtl是临时表,这种测试方法很适合。
    在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值