or...
CREATE OR REPLACE function weekenddays(startrange in date, endrange in date)
return number
as
weekenddays number;
BEGIN
SELECT (trunc((trunc(endrange+1) - trunc(startrange))/7) * 2)+
decode(decode((trunc(startrange) - trunc(startrange,'DAY')),
0, decode(mod((trunc(endrange+1) - trunc(startrange)),7),
0,0,7),
((mod( ( trunc(endrange+1) - trunc(startrange) ),7) ) +
(trunc(startrange) - trunc(startrange,'DAY'))))
,7,1,8,2,9,2,10,2,11,2,12,2,13,2,0)
INTO weekenddays
FROM dual;
RETURN weekenddays;
END;