[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
  

Mensagemem Qui, 17 Nov 2005 4:00 pm

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

Código: Selecionar todos
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:
Código: Selecionar todos
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>
dr_gori
Localização: Portland, OR USA

Thomas F. G

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

Mensagemem Qua, 18 Set 2013 3:51 pm

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

Código: Selecionar todos
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;
Renan Orati
Localização: São José do Rio Preto - SP



Voltar para PL/SQL

Quem está online

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