当我们在oracle中写完一个存储过程,我们通常需要使用测试调用存储过程,调用测试之后,然后提交执行结果,就可以去数据库中执行sql,查看我们的存储过程执行的数据是否符合预期效果。

实际测试中,我们可能不希望直接提交数据,原因有如下两点:

  1. 很多时候我们写的存储过程或多或少有些问题,数据也不正确,不希望直接提交
  2. 一旦提交了,可能这条测试数据就被使用了,我们需要重新创造测试数据

因此,如何通过sql调用存储过程,然后不提交,接着执行我们的查询、或者执行其他存储过程,直到最后再提交或者回滚数据,可以提高我们开发完自测的效果,方便省事。

案例演示

案例一:调用不带有out参数的的存储过程(比较简单)
存储过程定义如下:

PROCEDURE P_TEST(V_PARAM_1 IN VARCHAR2, V_PARAM_2 IN VARCHAR2) IS

存储过程调用如下:

BEGIN
    P_TEST(‘1’,‘2’);
END;

案例二:调用带有out参数的存储过程
存储过程定义如下

PROCEDURE P_TEST(V_PARAM_1 IN VARCHAR2, V_PARAM_2 IN VARCHAR2,V_RESULT OUT VARCHAR2) IS

存储过程调用如下:

BEGIN
    DECLARE
        V_RESULT VARCHAR2(32); --定义一个和返回结果相同的参数类型
    BEGIN
        P_TEST(‘1’, ‘1’, V_RESULT); --调用存储过程
        DBMS_OUTPUT.PUT_LINE(V_RESULT); --把返回结果打印到输出区域
    END;
END;

案例说明

如下图,可以先执行中间红色框框里的存储过程,然后可以看到上边的框框里,执行完成后是数据是没有提交的,可以下最下面的红色框里添加自己的查询代码,这个时候查询到的数据,包含了存储过程执行的结果,等自己测试完毕了,可以选择回滚数据,这样即使自己的存储过程写的有问题,也不会污染数据,修改后可以重复测试。
在这里插入图片描述

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐