J'ai une procédure stockée qui retourne la sortie en tant que curseur de référence. Je voudrais stocker la sortie dans une autre table en utilisant l'instruction MERGE. J'ai cependant des problèmes en mélangeant toutes les déclarations ensemble (AVEC, UTILISATION, MERGE etc.).Fusionner le curseur de sortie de SP dans la table?
Quelqu'un peut-il vous aider? Merci!
Voici le tableau que je veux la sortie dans (Stop_Time est laissé exprès):
TABLE: **USER_ALLOCATION** START_TIME date NOT NULL Primary Key USER_ID number NOT NULL Primary Key TASK_ID number NULL
C'est le SP:
create or replace
PROCEDURE REPORT_PLAN_AV_USER
(
from_dt IN date,
to_dt IN date,
sysur_key IN number,
v_reservations OUT INTRANET_PKG.CURSOR_TYPE
)
IS
BEGIN
OPEN v_reservations FOR
with
MONTHS as (select FROM_DT + ((ROWNUM-1)/(24*2)) as DT from DUAL connect by ROWNUM <= ((TO_DT - FROM_DT) * 24*2) + 1),
TIMES as (select DT as START_TIME,(DT + 1/48) as STOP_TIME from MONTHS where TO_NUMBER(TO_CHAR(DT,'HH24')) between 8 and 15 and TO_NUMBER(TO_CHAR(DT,'D')) not in (1,7))
select
TIMES.START_TIME,
TIMES.STOP_TIME,
T.TASK_ID,
sysur_key USER_ID,
from
TIMES
left outer join (ALLOCATED_USER u INNER JOIN REQUIRED_RESOURCE r ON u.AU_ID = r.RR_ID INNER JOIN TASK t ON r.TASK_ID = t.TASK_ID)
ON u.USER_ID = sysur_key AND t.PLAN_TYPE = 3 AND TIMES.start_time >= TRUNC30(t.START_DATE) AND TIMES.start_time < TRUNC30(t.FINISH_DATE)
where u.USER_ID is null OR u.USER_ID = sysur_key
order by START_TIME ASC;
END;
Merci de penser avec moi, j'ai fini par utiliser une table temporaire mondiale. Les données ne sont pas visibles, c'est pourquoi j'ai besoin d'un SP. J'utilise la table temporaire globale pour stocker la sortie, et continuer à partir de là. – Ropstah