Pular para o conteúdo
  • Este tópico contém 7 respostas, 3 vozes e foi atualizado pela última vez 11 anos, 1 mês atrás por Avatar de Andrei RubinoAndrei Rubino.
Visualizando 8 posts - 1 até 8 (de 8 do total)
  • Autor
    Posts
  • #105957
    Avatar de EricEric
    Participante

      So iniciante na area de pl/sql queria saber como crio um bloco anônimo que exiba durante 365 dias (1 ano) apenas as datas que caem no sábado e domingo, após a entrada de uma data. Após a solicitação da entrada da data, exibir sequencialmente a data e o dia da semana que representa essa data. Eu sei que consigo fazer apenas com um loop mas nao to acertando, os valores teriam que esta em ordem de data

      #105958
      Avatar de Sergio WilliansSergio Willians
      Mestre

        @Eric Araujo

        Cole para nós o que você já montou. Até para podermos orientá-lo melhor.

        #105990
        Avatar de EricEric
        Participante

          Até agora isso

          declare
          v_Data VARCHAR2(20);
          BEGIN
          FOR i IN 1..365 LOOP
          IF( to_char(sysdate-1+i,’DAY’) NOT IN (‘SATURDAY’, ‘SUNDAY’) ) THEN
          v_data := to_char(sysdate-1+i,’DAY’);
          dbms_output.put_line (v_data);
          END IF;
          END LOOP;
          END;

          #105991
          Avatar de Andrei RubinoAndrei Rubino
          Participante

            @Eric Araujo
            Acredito que seja isso que você quer, veja se atende suas necessidades.

            DECLARE
            v_DATA DATE;
            v_DATA_FIM DATE;
            BEGIN
            v_DATA := SYSDATE;
            v_DATA_FIM := ADD_MONTHS(V_DATA, 12);
            WHILE (V_DATA < V_DATA_FIM) LOOP

            IF (TO_CHAR(v_DATA, 'D') IN (1,7) ) THEN
            DBMS_OUTPUT.PUT_LINE(TO_CHAR(V_DATA,'DAY') || ' - ' || v_DATA);
            END IF;

            v_DATA := v_DATA + 1;

            END LOOP;

            END;
            /

            #106003
            Avatar de EricEric
            Participante

              Obrigado pela ajuda, atendeu perfeitamente o que queria esse loop
              Preciso evoluir esse programa para exibir os feriados e sua descrição. eu criei uma tabela feriado, com data e descrição mas não consigo trazer essas informações, alguma idéia ou outra forma de fazer.
              create table feriado
              ( dt date,
              descricao varchar2(50)
              );
              insert into feriado values ( to_date(’01/01/2011′,’dd/mm/yyyy’), ‘Confraternização Universal’);
              insert into feriado values ( to_date(’25/01/2011′,’dd/mm/yyyy’), ‘Aniversário de São Paulo’ );
              insert into feriado values ( to_date(’08/03/2011′,’dd/mm/yyyy’), ‘Carnaval’);
              insert into feriado values ( to_date(’21/04/2011′,’dd/mm/yyyy’), ‘Tiradentes’);
              insert into feriado values ( to_date(’22/04/2011′,’dd/mm/yyyy’), ‘Sexta-feira da Paixão’);
              insert into feriado values ( to_date(’01/05/2011′,’dd/mm/yyyy’), ‘Dia do Trabalho’);
              insert into feriado values ( to_date(’23/06/2011′,’dd/mm/yyyy’), ‘Corpus Christi’);
              insert into feriado values ( to_date(’07/09/2011′,’dd/mm/yyyy’), ‘Independência do Brasil’);
              insert into feriado values ( to_date(’12/10/2011′,’dd/mm/yyyy’), ‘Nossa Senhora Aparecida’);
              insert into feriado values ( to_date(’02/11/2011′,’dd/mm/yyyy’), ‘Finados’);
              insert into feriado values ( to_date(’25/12/2011′,’dd/mm/yyyy’), ‘Natal’);

              #106004
              Avatar de Andrei RubinoAndrei Rubino
              Participante

                @Eric Araujo
                Exibir como via DBMS_OUTPUT.PUT_LINE mesmo ?

                #106005
                Avatar de EricEric
                Participante

                  Sim isso mesmo, to tentando via select into.

                  #106006
                  Avatar de Andrei RubinoAndrei Rubino
                  Participante

                    @Eric

                    Para você fazer isso vai precisar de um cursor veja.
                    Procure mais sobre Cursores para entender o código.


                    DECLARE
                    CURSOR C1 IS
                    SELECT DT,
                    DESCRICAO
                    FROM FERIADO
                    ORDER BY DT;
                    R1 C1%ROWTYPE;
                    BEGIN
                    OPEN C1;
                    FETCH C1 INTO R1;
                    WHILE C1%FOUND LOOP
                    DBMS_OUTPUT.PUT_LINE('DATA:'||R1.DT||' DESCRIÇÃO: '||R1.DESCRICAO);
                    FETCH C1 INTO R1;
                    END LOOP;
                    CLOSE C1;
                    END;

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