[Dica] Função para os anos bissextos

Dúvidas, dicas e truques de PL/SQL. Aqui também vão assuntos relacionados a pacotes, triggers, funções, Java-Stored Procedures, etc
Responder
Avatar do usuário
dr_gori
Moderador
Moderador
Mensagens: 5024
Registrado em: Seg, 03 Mai 2004 3:08 pm
Localização: Portland, OR USA
Contato:
Thomas F. G

Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered

Mais por curiosidade, aí vai uma função que identifica o ano bissexto.
No caso dessa, ela retorna TRUE ou FALSE.

Selecionar tudo

CREATE OR REPLACE FUNCTION BISSEXTO (VANO IN NUMBER) RETURN BOOLEAN
IS
  VRESTO1 NUMBER(5,2);
  VRESTO2 NUMBER(5,2);
  VRESTO3 NUMBER(5,2);
BEGIN
  VRESTO1 := MOD(VANO,4);
  VRESTO2 := MOD(VANO,100);
  VRESTO3 := MOD(VANO,400);

  IF ((VRESTO1 = 0 AND VRESTO2 <> 0 ) OR VRESTO3 = 0) THEN
  DBMS_OUTPUT.PUT_LINE(VANO || ' É UM ANO BISSEXTO');
  RETURN TRUE;
  ELSE
  DBMS_OUTPUT.PUT_LINE (VANO || ' NÃO É UM ANO BISSEXTO');
  RETURN FALSE;
  END IF;
END;
Aí vai o exemplo:

Selecionar tudo

SQL> set serveroutput on
SQL> declare vtemp boolean;
  2  begin
  3    vtemp:= bissexto(2005);
  4    vtemp:= bissexto(2006);
  5    vtemp:= bissexto(2007);
  6    vtemp:= bissexto(2008);
  7  end;
  8  /
2005 não é um ano bissexto
2006 não é um ano bissexto
2007 não é um ano bissexto
2008 é um ano bissexto

PL/SQL procedure successfully completed.

SQL> 
Renan Orati
Rank: Analista Júnior
Rank: Analista Júnior
Mensagens: 90
Registrado em: Qui, 23 Ago 2007 3:40 pm
Localização: São José do Rio Preto - SP

Segue para somar ai outra função com o mesmo objetivo:

Selecionar tudo

create or replace function bissexto (pano number) return boolean is
  vbi date;
begin
  vbi := to_date('29/02/'||pano);
  return true;
exception
  when others then
    return false;
end;
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Google Adsense [Bot] e 16 visitantes