No caso dessa, ela retorna TRUE ou FALSE.
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;
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>