【发布时间】:2022-10-13 16:42:06
【问题描述】:
我需要一个项目来比较彼此之间的许多记录,但我之前在同一个选择的循环中做了一个选择,但我发现它太慢了,实际上我相信如果我可以将查询结果保存到中,我最多可以节省 2 秒一个光标并使用它,但我不知道该怎么做。
FUNCTION RES_DETP
(P_OBJET IN NUMBER
,P_DATE_DEBUT IN DATE
,P_DATE_FIN IN DATE
,P_SOCIETE IN VARCHAR2
) RETURN BOOLEAN
IS
CURSOR LISTE_RESERVATION IS SELECT
NOM cur_nom,
PRENOM cur_prenom,
RESERVATIONS.DATE_DEBUT_PRECIS cur_ddp,
RESERVATIONS.DATE_FIN_PRECIS cur_dfp,
FROM CLIENTS,RESERVATIONS,LIGNES_RESERVATIONS
WHERE
LIGNES_RESERVATIONS.OBJ_NUMERO = P_OBJET AND
LIGNES_RESERVATIONS.OBJ_SOCIETES_ID = P_SOCIETE AND
LIGNES_RESERVATIONS.SOCIETES_ID = P_SOCIETE AND
RESERVATIONS.SOCIETES_ID = P_SOCIETE AND
LIGNES_RESERVATIONS.RES_NUMERO = RESERVATIONS.NUMERO AND
LIGNES_RESERVATIONS.RES_SOCIETES_ID = RESERVATIONS.SOCIETES_ID AND
CLIENTS.NUMERO = RESERVATIONS.CLI_NUMERO AND
CLIENTS.SOCIETES_ID = RESERVATIONS.CLI_SOCIETES_ID AND
CLIENTS.SOCIETES_ID = P_SOCIETE AND
P_DATE_FIN > DATE_DEBUT_PRECIS AND
P_DATE_DEBUT < DATE_FIN_PRECIS
order by RESERVATIONS.DATE_DEBUT_PRECIS;
CUR_RESERVATION LISTE_RESERVATION%ROWTYPE;
COL_RESERVATION LISTE_RESERVATION%ROWTYPE;
BEGIN
OPEN LISTE_RESERVATION;
LOOP
FETCH LISTE_RESERVATION INTO CUR_RESERVATION;
EXIT WHEN LISTE_RESERVATION%NOTFOUND;
-- I want here to loop LISTE_RESERVATION again to compare each reservation together
END LOOP;
END;
【问题讨论】: