› Fóruns › SQL e PL/SQL › Não consigo retornar os registros › Não consigo retornar os registros
@Thunder_Catz
Tentei fazer o que você disse mas obtive outro erro: PLS-00103: Encontrado o símbolo “SELECT”.
CREATE TABLE tabelaFinal (
DT_INICIO_VIGENCIA date,
DT_FIM_VIGENCIA date,
TX_UNIDADE VARCHAR2(20 BYTE),
TX_TRM VARCHAR2(20 BYTE),
TX_TP_INTERVENCAO VARCHAR2(100 BYTE),
TX_SERIE VARCHAR2(20 BYTE),
TX_LOCAL_ESPECIFICO VARCHAR2(200 BYTE),
TX_COMPOSICAO VARCHAR2(20 BYTE),
TX_AREA_MANUTENCAO VARCHAR2(200 BYTE)
);
CREATE GLOBAL TEMPORARY TABLE tabelaTemporaria (
DT_INICIO_VIGENCIA date,
DT_FIM_VIGENCIA date,
TX_UNIDADE VARCHAR2(20 BYTE),
TX_TRM VARCHAR2(20 BYTE),
TX_TP_INTERVENCAO VARCHAR2(100 BYTE),
TX_SERIE VARCHAR2(20 BYTE),
TX_LOCAL_ESPECIFICO VARCHAR2(200 BYTE),
TX_COMPOSICAO VARCHAR2(20 BYTE),
TX_AREA_MANUTENCAO VARCHAR2(200 BYTE)
) ON COMMIT DELETE ROWS;
insert into tabelaTemporaria
SELECT DISTINCT LRA.DT_INICIO_VIGENCIA,
LRA.DT_FIM_VIGENCIA ,
MVCSL.TX_UNIDADE ,
MVUL.TX_TRM ,
SVTI.TX_TP_INTERVENCAO ,
MVCSL.TX_SERIE ,
LLE.TX_LOCAL_ESPECIFICO ,
MVTL.TX_COMPOSICAO ,
LAM.TX_AREA_MANUTENCAO
FROM
(SELECT ID_LOCAL_ESPECIFICO,
ID_AREA_MANUTENCAO ,
DT_INICIO_VIGENCIA ,
DT_FIM_VIGENCIA ,
CD_COMPOSICAO ,
CD_TRM ,
CD_UNIDADE ,
ID_TIPO_INTERVENCAO ,
ID_LINHA ,
ID_SERVICO ,
CD_TIPO_OPERACAO
FROM LMR_RESERVA_ALOCACAO
UNION
SELECT ID_LOCAL_ESPECIFICO,
ID_AREA_MANUTENCAO ,
DT_INICIO_VIGENCIA ,
DT_FIM_VIGENCIA ,
CD_COMPOSICAO ,
CD_TRM ,
CD_UNIDADE ,
ID_TIPO_INTERVENCAO ,
ID_LINHA ,
ID_SERVICO ,
CD_TIPO_OPERACAO
FROM LMR_RESERVA_ALOCACAO_HIST
) LRA
LEFT JOIN LMR_LOCAL_ESPECIFICO LLE
ON LLE.ID_LOCAL_ESPECIFICO = LRA.ID_LOCAL_ESPECIFICO
LEFT JOIN LMR_AREA_MANUTENCAO LAM
ON LAM.ID_AREA_MANUTENCAO = LLE.ID_AREA_MANUTENCAO
LEFT JOIN MTR_VW_TREM_LMR MVTL
ON LRA.CD_COMPOSICAO = MVTL.CD_COMPOSICAO
LEFT JOIN MTR_VW_UE_LMR MVUL
ON LRA.CD_TRM = MVUL.CD_TRM
LEFT JOIN MTR_VW_CARROS_SERIE_LMR MVCSL
ON LRA.CD_UNIDADE = MVCSL.CD_UNIDADE
LEFT JOIN SIC_VW_TP_INTERVENCAO_LMR SVTI
ON LRA.ID_TIPO_INTERVENCAO = SVTI.ID_TIPO_INTERVENCAO
LEFT JOIN CTC_VW_TCO_LINHASERVICO_LMR CVTL
ON LRA.ID_LINHA = CVTL.ID_LINHA
OR LRA.ID_SERVICO = CVTL.ID_SERVICO
WHERE 1=1
AND LRA.CD_TIPO_OPERACAO = ‘A’
AND LLE.ID_PARQUE_MANUTENCAO = 1
AND LRA.ID_AREA_MANUTENCAO = 19
AND ((LRA.DT_INICIO_VIGENCIA >= ’01/02/2012′ AND LRA.DT_INICIO_VIGENCIA = ’01/02/2012′ AND LRA.DT_FIM_VIGENCIA <= '10/02/2012'))
ORDER BY LRA.DT_FIM_VIGENCIA,
LAM.TX_AREA_MANUTENCAO ,
LLE.TX_LOCAL_ESPECIFICO ,
MVCSL.TX_SERIE ,
MVTL.TX_COMPOSICAO ,
MVUL.TX_TRM ,
MVCSL.TX_UNIDADE;
DECLARE contador integer;
linhas integer;
dataInicialTemp date;
dataFinalTemp date;
unidadeTemp VARCHAR2(20 BYTE);
trmTemp VARCHAR2(20 BYTE);
intervencaoTemp VARCHAR2(100 BYTE);
serieTemp VARCHAR2(20 BYTE);
localTemp VARCHAR2(200 BYTE);
composicaoTemp VARCHAR2(20 BYTE);
areaTemp VARCHAR2(200 BYTE);
begin
contador := 0;
select count(*) into linhas from tabelatemporaria;
while contador < linhas loop
contador := contador + 1;
select DT_INICIO_VIGENCIA, DT_FIM_VIGENCIA, TX_UNIDADE, TX_TRM, TX_TP_INTERVENCAO,
TX_SERIE, TX_LOCAL_ESPECIFICO, TX_COMPOSICAO, TX_AREA_MANUTENCAO
into dataInicialTemp, dataFinalTemp, unidadeTemp, trmTemp, intervencaoTemp,
serieTemp, localTemp, composicaoTemp, areaTemp
from tabelatemporaria where ROWNUM < 2;
if (dataFinalTemp is null) then
insert into tabelafinal
values (dataInicialTemp, dataFinalTemp, unidadeTemp, trmTemp, intervencaoTemp,
serieTemp, localTemp, composicaoTemp, areaTemp);
else
while (dataInicialTemp < dataFinalTemp + 1) loop
insert into tabelafinal
values (dataInicialTemp, dataFinalTemp, unidadeTemp, trmTemp, intervencaoTemp,
serieTemp, localTemp, composicaoTemp, areaTemp);
dataInicialTemp := dataInicialTemp + 1;
end loop;
end if;
delete from tabelatemporaria where ROWNUM < 2;
end loop;
COMMIT;
end;
select * from tabelafinal;