이 글에서는 PL/SQL을 사용하여 주어진 연도가 윤년(leap year)인지 아닌지 판별하는 방법을 알아보겠습니다. PL/SQL 코드는 선언부와 실행부 등 관련된 문장들이 하나의 블록으로 구성되어 동작합니다.
윤년을 판별하는 기준은 다음과 같습니다.
윤년 판별 알고리즘
isLeapYear(year):
begin
if year is divisible by 4 and not divisible by 100, then
it is leap year
else if the number is divisible by 400, then
it is leap year
else
it is not leap year
end즉, 윤년의 조건을 정리하면 다음과 같습니다.
- 연도가 4로 나누어 떨어지고, 100으로는 나누어 떨어지지 않으면 윤년입니다.
- 연도가 400으로 나누어 떨어지면 윤년입니다.
- 그 외의 경우에는 모두 평년입니다.
PL/SQL 예제 코드
DECLARE
year NUMBER := 2012;
BEGIN
IF MOD(year, 4)=0
AND
MOD(year, 100)!=0
OR
MOD(year, 400)=0 THEN
dbms_output.Put_line(year || ' is leap year ');
ELSE
dbms_output.Put_line(year || ' is not leap year.');
END IF;
END;실행 결과
2012 is leap year
코드 설명
위 예제에서는 변수 year에 2012를 대입한 후, MOD 함수를 사용하여 나머지 연산을 수행합니다.
MOD(year, 4)는 연도를 4로 나눈 나머지를 반환하며, 그 결과가 0이면 4로 나누어 떨어진다는 의미입니다. 이 논리식은 AND, OR 연산자를 조합하여 앞서 설명한 윤년 판별 규칙을 그대로 구현한 것입니다.
2012년은 4로 나누어 떨어지고 100으로는 나누어 떨어지지 않으므로, 결과적으로 "2012 is leap year"라는 메시지가 출력됩니다.