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遊標中。 –