@markdown
# PL/SQL 연습하기
____
<pre><code class="sql" style="font-size:14px">문제 1. 1~100까지의 수에서 홀수만 출력
BEGIN
FOR f_idx IN 1..100
LOOP
IF (mod(f_idx, 2)) != 0
THEN
DBMS_OUTPUT.PUT_LINE(f_idx);
END IF;
END LOOP;
END;
/
</code></pre>
<pre><code class="sql" style="font-size:14px">문제 2. 1~100까지의 수에서 홀수의 합을 출력
DECLARE
l_sum NUMBER := 0;
BEGIN
FOR f_idx IN 1..100
LOOP
IF (mod(f_idx, 2)) != 0
THEN
l_sum := l_sum + f_idx;
END IF;
END LOOP;
DBMS_OUTPUT.PUT_LINE(l_sum);
END;
/
</code></pre>
<pre><code class="sql" style="font-size:14px">문제 3. 구구단 2단부터 l_num단까지 출력
VARIABLE l_num NUMBER;
DECLARE
l_cnt NUMBER := :l_num;
l_val NUMBER := 2;
BEGIN
WHILE l_val <= l_cnt
LOOP
FOR f_idx IN 2..9
LOOP
DBMS_OUTPUT.PUT_LINE(l_val || '*' || f_idx || '=' || l_cnt * f_idx);
END LOOP;
l_val := l_val + 1;
END LOOP;
END;
/
</code></pre>
<pre><code class="sql" style="font-size:14px">문제 4. 1~100까지의 합을 구하되, 합이 10의 배수로 출력
DECLARE
l_sum NUMBER := 0;
BEGIN
FOR f_idx IN 1..100
LOOP
l_sum := l_sum + f_idx;
IF (mod(l_sum, 10)) = 0
THEN
DBMS_OUTPUT.PUT_LINE(l_sum);
END IF;
END LOOP;
END;
/
</code></pre>
<pre><code class="sql" style="font-size:14px">문제 5. 10!을 계산하여 출력
DECLARE
l_val NUMBER := 10;
l_sum NUMBER := 1;
BEGIN
WHILE l_val > 0
LOOP
l_sum := l_sum * l_val;
l_val := l_val - 1;
END LOOP;
DBMS_OUTPUT.PUT_LINE(l_sum );
END;
/
</code></pre>
<pre><code class="sql" style="font-size:14px">문제 6. 바인드 변수 2개를 받아서 두 수 사이의 수 중에서 2의 배수와 3의 배수를 출력
(단, 2의 배수이면서 3의 배수인 수는 1번만 출력)
VARIABLE l_num1 NUMBER;
VARIABLE l_num2 NUMBER;
exec :l_num1 := 2;
exec :l_num2 := 15;
DECLARE
l_val1 NUMBER := :l_num1;
l_val2 NUMBER := :l_num2;
BEGIN
DBMS_OUTPUT.PUT_LINE(l_val1 || ' 와' || l_val2 || '사이 2, 3의 배수');
WHILE l_val1 <= l_val2
LOOP
IF (mod(l_val1, 2) = 0 AND mod(l_val1, 3 ) = 0)
THEN
DBMS_OUTPUT.PUT_LINE('2와 3의 공배수 ' || l_val1);
ELSIF mod(l_val1, 3 ) = 0
THEN DBMS_OUTPUT.PUT_LINE('3의 배수 ' || l_val1);
ELSIF mod(l_val1, 2) = 0
THEN DBMS_OUTPUT.PUT_LINE('2의 배수 ' || l_val1);
END IF;
l_val1 := l_val1 + 1;
END LOOP;
END;
/
</code></pre>
<pre><code class="sql" style="font-size:14px">문제 7. 중첩 LOOP를 사용하여 아래와 같은 결과 만들기
DECLARE
l_val NUMBER := 2;
BEGIN
WHILE l_val <= 8
LOOP
FOR f_idx IN REVERSE 1..9
LOOP
IF (mod(f_idx, 2) != 0) AND (f_idx < l_val)
THEN
DBMS_OUTPUT.PUT_LINE(l_val || '*' || f_idx || '=' || l_val * f_idx);
END IF;
END LOOP;
DBMS_OUTPUT.PUT_LINE('----------------------');
l_val := l_val + 2;
END LOOP;
END;
/
</code></pre>
'PL SQL' 카테고리의 다른 글
PL/SQL - 프로시저, 함수, 커서, 패키지, 트리거 (0) | 2017.05.19 |
---|---|
PL/SQL - 기초(구조, 변수, 문법) (0) | 2017.05.18 |