[Hint] Function for leap years

Dúvidas, dicas e truques de PL/SQL. Aqui também vão assuntos relacionados a pacotes, triggers, funções, Java-Stored Procedures, etc
  

Poston Thu, 17 Nov 2005 4:00 pm

More out of curiosity, here's a function that identifies the leap year.
In this case, it returns TRUE or FALSE.

Code: Select all
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;
here's the example:
Code: Select all
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
Location: 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

Poston Wed, 18 Sep 2013 3:51 pm

Follows to add ai another function with the same goal:
Code: Select all
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
Location: São José do Rio Preto - SP



Return to PL/SQL

Who is online

Users browsing this forum: No registered users and 12 guests