PL SQL

PL/SQL 제어문 (IF, CASE)

n.han 2016. 7. 7. 17:16

[제어문]

- IF: 알반적인 프로그래밍에서 사용되는 IF문을 PL/SQL에서도 사용할 수 있다. IF, THEN, ELSIF, THEN, ELSE, END IF임에 유의한다.

 


DECLARE
  v_myage NUMBER := 41 ;
BEGIN
  IF v_myage < 11 THEN
    DBMS_OUTPUT.PUT_LINE(' I am a child ');
  ELSIF v_myage < 20 THEN
    DBMS_OUTPUT.PUT_LINE(' I am young ');
  ELSIF v_myage < 30 THEN
    DBMS_OUTPUT.PUT_LINE(' I am in my twenties');
  ELSIF v_myage < 40 THEN
    DBMS_OUTPUT.PUT_LINE(' I am in my thirties');
  ELSE
    DBMS_OUTPUT.PUT_LINE(' I am always young ');
  END IF;
END;
/
I am in my thirties
PL/SQL procedure successfully completed.

 

 

- IF NULL : NULL의 비교는 항상 NULL이 때문에, ELSE 이하 문만 수행된다.

 

DECLARE
  v_myage NUMBER ;
BEGIN
  IF v_myage < 11 THEN
    DBMS_OUTPUT.PUT_LINE(' I am a child ');
  ELSE
    DBMS_OUTPUT.PUT_LINE(' I am not a child ');
  END IF;
END;
/
I am not a child
PL/SQL procedure successfully completed.

 

- CASE 표현식과 조건문

1) CASE 표현식 : 단순하게 조건문에 따른 값을 대입할 때 사용된다. THEN절에 특정 값이 사용될 때 필요하다.


DECLARE
  v_grade     CHAR(1) := UPPER('&grade') ;
  v_appraisal VARCHAR2(20) ;
BEGIN
  v_appraisal :=
  CASE v_grade
  WHEN 'A' THEN
    'Excellent'
  WHEN 'B' THEN
    'Very Good'
  WHEN 'C' THEN
    'Good'
  ELSE
    'No such grade'
  END;
  DBMS_OUTPUT.PUT_LINE ('Grade : '|| v_grade) ;
  DBMS_OUTPUT.PUT_LINE ('Appraisal: '|| v_appraisal);
END;
/
Enter value for grade: B
old 2: v_grade CHAR(1) := UPPER('&grade') ;
new 2: v_grade CHAR(1) := UPPER('B') ;
Grade : B
Appraisal: Very Good
PL/SQL procedure successfully completed.


 

2) CASE 조건문 : THEN 절에서 단순한 값이 아닌 PL/SQL (명령문)을 실행 시키고자 하는 경우에 CASE 조건문을 사용해야 한다. CASE 조건문은 끝이 END CASE로 끝난다.