Gerar relatorio txt

Visualizando 8 posts - 1 até 8 (de 8 do total)
  • Autor
    Posts
  • #94955
    Avatar de leo_jfleo_jf
    Participante

    Bom dia Senhores,

    Preciso criar uma PROCEDURE, que ao final do processamento irá
    gerar um aquivo rel.txt, com os seguintes criterios.

    Segue:

    Tenho meu SELECT as informações
    MATRICULA PERIODO TIPO_HR TOTAL_HORAS
    10000 201001 5 8
    10000 201001 5 5
    10000 201001 6 4
    10000 201002 5 3
    10000 201002 6 1
    10001 201001 1 3
    10001 201002 2 2
    10001 201002 3 1
    … … .. ..
    … … .. ..

    obs: tipo 5 é hora paga, e tipo 6 é hora não paga

    No processamento tenho que quebrar por matricula.
    Exemplo para matricula 10000 e 10001:
    Abaixo seria o arquivo rel.txt:

    MATRICULA; PERIODO; HORA_PAGA; HORA_NAO_PAGA
    10000 ; 201001 ; 13 ; 4
    10000 ; 201002 ; 3 ; 1
    10000 ; 201002 ; 3 ; 1
    10000 ; 201002 ; 3 ; 1
    10001 ; 201001 ; 1 ; 3
    10001 ; 201002 ; 5 ; 3
    … ; … ; … ; ..

    Alguém tem uma sugestão?
    Qq ajuda é valida

    #94956
    Avatar de fsitjafsitja
    Participante

    Olá,

    Qual foi o problema que você encontrou?

    Poste estrutura das tabelas envolvidas e dados de exemplo, se o problema é a aquisição dos dados delas com o layout correto. Fica mais fácil ajudar.

    Se estiver encontrando algum erro poste a mensagem de erro completa e o trecho de código causando dificuldades, por gentileza.

    Att,
    Francisco.

    #94957
    Avatar de leo_jfleo_jf
    Participante

    Fala Francisco,

    Como postei. Não houve erros. Perguntei se alguém tinha uma dica de como criar bloco pl/sql que atenda essas caracteristicas que descrevi.

    #94958
    Avatar de Manoel872Manoel872
    Participante

    Utilize o UTL_FILE.FILE_TYPE para criar o arquivo será necessário configurar um parâmetro no oracle para você criar o arquivo em um determinado diretório do servidor.

    Att,

    Manoel Jr.

    #94959
    Avatar de leo_jfleo_jf
    Participante

    Galera,

    Acho que vcs não entenderam bem o que perguntei.
    Falei sobre a lógica para montar o vetor, e não sobre pacote utl_file.

    De qq forma, obrigado pelas respostas.

    #94962
    Avatar de fsitjafsitja
    Participante

    Admito que não entendi… 😉
    Por isso que pedi mais detalhamento sobre o problema: estrutura de tabelas, dados de exemplo e qual o resultado esperado para esse exemplo.

    A forma de fazer é só um meio para um fim. Há varias formas de se chegar no resultado que você quer. Por isso também não entendi a colocação sobre uso de vetores: usar vetores tem a ver com a solução, não com o problema, e no momento a minha dificuldade é entender o problema.

    #94965
    Avatar de burgaburga
    Participante

    Acredito que o que você está querendo é algo próximo disto:

    WITH TABELA AS (
    SELECT 10000 MATRICULA,201001 PERIODO,5 TIPO_HR, 8 TOTAL_HORAS FROM DUAL
    UNION ALL
    SELECT 10000, 201001 , 5 , 5 FROM DUAL
    UNION ALL
    SELECT 10000, 201001, 6, 4 FROM DUAL
    UNION ALL
    SELECT 10000, 201002, 5, 3 FROM DUAL
    UNION ALL
    SELECT 10000, 201002, 6, 1 FROM DUAL
    UNION ALL
    SELECT 10001, 201001, 1, 3 FROM DUAL
    UNION ALL
    SELECT 10001, 201002, 2, 2 FROM DUAL
    UNION ALL
    SELECT 10001, 201002, 3, 1 FROM DUAL
    )
    SELECT T1.MATRICULA, T1.PERIODO,
    (SELECT SUM (T2.TOTAL_HORAS)
    FROM TABELA T2
    WHERE T1.MATRICULA = T2.MATRICULA
    AND T1.PERIODO = T2.PERIODO
    AND TIPO_HR = 5) HORA_PAGA,
    (SELECT SUM (T2.TOTAL_HORAS)
    FROM TABELA T2
    WHERE T1.MATRICULA = T2.MATRICULA
    AND T1.PERIODO = T2.PERIODO
    AND TIPO_HR = 6) HORA_NAO_PAGA
    FROM TABELA T1
    GROUP BY T1.MATRICULA, T1.PERIODO;

    Resultado pros dados de exemplo que você nos passou:

    MATRICULA PERIODO HORA_PAGA HORA_NAO_PAGA
    ----------------------|----------------------|----------------------|----------------------
    10001 201002
    10001 201001
    10000 201001 13 4
    10000 201002 3 1

    Estou certo?

    #94966
    Avatar de leo_jfleo_jf
    Participante

    Fala Burga,

    Exatamente isso. Que bom que entendeu rsrsr.
    Acabei fazendo de outra forma: Criei um vetor e carreguei para memória. So que com isso ficou um pl/sql um pouco grande devido as condições.
    Vou chegar amanha no trabalho, e testar essa solução. Se funcionar mudo para essa opção.
    Vlw mesmo pela dica!
    Precisando, só dizer.
    [/i]

Visualizando 8 posts - 1 até 8 (de 8 do total)
  • Você deve fazer login para responder a este tópico.
plugins premium WordPress