我正在打开REF CURSOR的包中开发一系列PL / SQL存储过程,这些RES CURSOR作为OUT参数传递给调用者,以便与另一个框架进行互操作。我正在使用SQL Developer,最近开始考虑使用内置的测试功能。
我正在寻找一种使用SQL Developer的单元测试框架来验证REF CURSOR结果的方法。我开发了一些分页逻辑,我想确保它正常运行所以我希望我可以验证我有正确的行数,并且它们的行号在相应页面的范围内。
我发现了一个类似的问题here,但该解决方案使单元测试绝对无用(至少据我所知),因为它在运行程序后实际上没有执行任何验证。如果有人可以解释如何验证它或向我展示我在Oracle论坛的解决方案中缺少的内容,我将不胜感激。
答案 0 :(得分:3)
进程验证可用于单元测试SQL Developer无法处理的数据类型。
模板:
DECLARE
l_Cursor SYS_REFCURSOR ;
BEGIN
OPEN l_Cursor FOR '<SQL goes here>' ;
MY_PROCEDURE( l_Cursor ) ;
<do validation>
CLOSE l_Cursor;
IF <not valid> THEN
RAISE PROGRAM_ERROR ;
END IF ;
END ;
答案 1 :(得分:1)
我们通过比较两个REF游标的XML表示,在PL / SQL中做了类似的事情(尽管没有使用SQL Developer的单元测试框架):
要将REF CURSOR转换为XML,您可以使用DBMS_XMLGEN,如AskTom on describing a ref cursor
所示