이 문제에서는 숫자 n이 주어졌을 때, PL/SQL을 사용하여 1부터 n까지의 모든 홀수를 출력하고, 그 홀수들의 합계까지 함께 구하는 것이 목표입니다.
PL/SQL은 SQL의 절차적 언어 확장(Procedural Language Extension)입니다. PL/SQL 코드는 선언부와 실행부 등 관련된 선언과 명령문들을 하나의 블록으로 묶어 처리하는 일련의 명령 시퀀스로 구성됩니다.
먼저 문제의 입출력 예시를 살펴보겠습니다.
입력: 7
출력: 홀수는 1, 3, 5, 7
홀수의 합은 16
해결 접근 방법
이 문제는 다음과 같은 논리로 해결할 수 있습니다.
숫자를 담을 변수를 1로 초기화하고, 합계를 저장할 변수는 0으로 초기화합니다. 그런 다음 해당 숫자가 n 이하인 동안 반복 루프(WHILE LOOP)를 수행하면서, 현재 숫자를 출력하고 합계 변수에 더한 뒤 숫자를 2씩 증가시킵니다. 2씩 증가하므로 자연스럽게 홀수만 순회하게 됩니다.
예제 코드
DECLARE
num NUMBER(3) := 1;
sumvar NUMBER(4) := 0;
BEGIN
dbms_output.Put_line('홀수 목록 : ');
WHILE num <= 7 LOOP
dbms_output.Put_line(num);
sumvar := sumvar + num;
num := num + 2;
END LOOP;
dbms_output.Put_line('홀수의 합은 '|| sumvar);
END;
코드 설명
- 선언부(DECLARE): 변수 num을 1로 초기화하여 첫 번째 홀수에서 시작하도록 하고, 합계를 저장할 sumvar를 0으로 초기화합니다.
- 실행부(BEGIN): WHILE 루프를 사용해 num이 7 이하인 동안 반복합니다. 각 반복에서 현재 값을 출력하고(sum), sumvar에 누적한 후 num을 2 증가시켜 다음 홀수로 넘어갑니다.
- 결과 출력: 루프가 종료되면 dbms_output.Put_line으로 최종 합계를 화면에 표시합니다.
출력 결과
홀수 목록 :
1
3
5
7
홀수의 합은 16
위 결과에서 확인할 수 있듯이, 1부터 7 사이의 홀수인 1, 3, 5, 7이 차례대로 출력되며, 이들의 합 1+3+5+7 = 16이 마지막에 정상적으로 계산되어 출력됩니다.