Я разрабатываю запрос, который должен использовать значения, которые были возвращены в этом объявлении:
DECLARE
V_CD_AM NUMBER;
cursor cd_am_cursor IS
SELECT CD_AMOST
FROM L_CHEG
WHERE SQ_CHEG = 4153839;
BEGIN
OPEN cd_am_cursor;
LOOP
FETCH cd_am_cursor into V_CD_AM;
EXIT WHEN cd_am_cursor%NOTFOUND;
END LOOP;
END;
Этот запрос возвращает две строки.Я хочу получить эти две строки и запустить его по другому запросу.Второй запрос более сложный (есть несколько объединений).На самом деле все, что мне нужно, это результат этого второго запроса.
SELECT AMAN.CD_AMOST_ANA CodAmAnalise,
AN.DESCR_ANA DescrAna,
r.result Result,
ch.data_sist DataCheg,
AMAN.ORDEM Ordem,
aman.limite_atraso LimiteAtraso,
aman.idc_const IdcConst,
r.cod_obser CodObser,
r.tag_equip Equip,
SYSDATE DataAtual,
r.seq_result SeqResult,
aman.cod_ana CodAna,
aman.idc_calc IdcCalc,
aman.cd_amost CdAmost,
aman.tempo_bloq TempoBloq,
r.data_sistema DataSistema,
r.idc_status IdcStatus
FROM AMOST_ANA AMAN
JOIN ANALISE AN ON AMAN.CD_ANA = AN.CD_ANA
LEFT JOIN CHEG_AMAN CHAMAN ON aman.cd_amost_ana =
chaman.cd_amost_ana
AND aman.cd_amost =
chaman.cd_amost
AND CHAMAN.seq_cheg =
4153839
JOIN CHEG ch ON chaman.sq_cheg = ch.sq_cheg
AND aman.cd_amost = ch.cd_amost
AND ch.data_sistema =
(SELECT MAX(data_sistema)
FROM cheg
WHERE sq_cheg = 4153839)
JOIN RESULTADO R ON ch.SQ_CHEG = R.SQ_CHEG
AND CHAMAN.CD_AMOST_ANA =
R.COD_AMOST_ANA
AND r.idc_status NOT IN ('T')
AND (r.data_sistema =
(SELECT MAX(data_sistema)
FROM resultado
WHERE sq_cheg = 4153839
AND cd_amost_ana =
CHAMAN.COD_AMOST_ANA
AND idc_status NOT IN ('T')) OR
r.data_sistema IS NULL)
WHERE AN.IDC_ATIVO = 'True'
AND aman.cd_amost = //Here in this line I would like use V_CD_AM
AND AMAN.IDC_ATIVO = 'True'
ORDER BY AMAN.ORDEM;
Есть еще один способ выполнить этот второй запрос?Запрос работает, если я введу:
AND aman.cd_amost = someRealValue
Но это someRealValue должно быть динамическим, поэтому я создаю объявление V_CD_AM
, Как получить эти значения и правильно выполнить этот запрос