0
我有一个Oracle过程返回一个游标,其中有一个结果集,但使用我编写它的方式,它只返回最后一次迭代的结果我有的循环。如何使一个Oracle过程返回一个游标,其中有多行
这里是我的代码示例
create or replace PROCEDURE PROC_SB_OBTENER_STATS_TEST (FECHA_INICIO IN DATE, FECHA_FIN IN DATE, RESULTADOS OUT SYS_REFCURSOR) AS
FECHAS SYS_REFCURSOR;
FECHA_BUSQUEDA DATE;
BEGIN
FECHAS := FUN_SB_OBTENER_FECHAS(FECHA_INICIO, FECHA_FIN);
LOOP
FETCH FECHAS
INTO FECHA_BUSQUEDA;
EXIT WHEN FECHAS%notfound;
OPEN RESULTADOS FOR
--Here I got a select where the condition uses the variable FECHA_BUSQUEDA
END LOOP;
CLOSE FECHAS;
END PROC_SB_OBTENER_STATS_TEST;
程序编译和运行,但它只返回我的光标,最后选择它执行(如果我把10之间的日期/ 10/12和12/10/12它只返回12/10/12的结果)。
如何使OPEN FOR
将查询的结果添加到其当前内容中,而不是将其全部覆盖并只显示最后一个结果?
您需要接受查询,为您提供fecha_busqueda并将结果查询加入到查询中。也就是说,不是有两个单独的查询,你手动加入到PL/SQL中(这就是你正在做的),只需要一个查询来完成SQL中的连接。这样,您可以将它声明为引用游标,并将其传递给调用程序,以便根据需要进行循环。 – Boneist
RESULTADOS是一个游标,FECHA_BUSQUEDA是一个日期,我使用FECHA_BUSQUEDA作为select查询的值,并将其插入到RESULTADOS游标中。 –