본문 바로가기

SQL

[PL/SQL]IF, CASE

연습테이블

 

IF

 

IF문은 BEGIN~END 사이에 자바에 쓰이는 IF 문 처럼 사용 할 수 있다.

 

차이점은 자바에서 조건이 맞으면 실행되는 문장에 THEN을 삽입한다.

 IF P_ORIGIN='1' OR P_ORIGIN='2' THEN  TEMP:=CONCAT(P_ORIGIN,'신입'||P_VALUE);
 -- 만약 P_ORIGIN 이 1 또는 2 라면 TEMP는 CONCAT(P_ORIGIN,'신입'||P_VALUE)이다. 

여기서 := 는 자바에서 = 를 뜻하고 = 는 자바에서 ==을 뜻한다.

나머지 ELSE 문 ELSIF문은 같으며 IF문이 끝날때 END IF로 문장을 닫으면 된다.

 

CREATE OR REPLACE FUNCTION CTNNFUN(P_ORIGIN IN VARCHAR2,P_VALUE IN VARCHAR2)RETURN VARCHAR2
IS
TEMP VARCHAR2(20):=NULL;
BEGIN
     IF P_ORIGIN='1' OR P_ORIGIN='2' THEN 
     TEMP:=CONCAT(P_ORIGIN,'신입'||P_VALUE);
     ELSE
     TEMP:=CONCAT(P_ORIGIN,'졸업'||P_VALUE);
     END IF;
     RETURN TEMP;
END CTNNFUN;
  • VARCHAR2 타입인 P_ORIGIN 과 P_VALUE 생성한다.

 

  • TEMP 를 VARCHAR2(20)으로 정의하고 NULL값으로 한다.

 

  • 만약 P_ORIGIN='1' 또는 P_ORIGIN='2' 이면CONCAT은 문장을 합치는 역할을 한다.

 

  • TEMP:=CONCAT(P_ORIGIN,'신입'||P_VALUE) : TEMP의 값에 1 또는 2 , '신입', P_VALUE 을 넣어준다.

 

  • 아닌 경우 TEMP:=CONCAT(P_ORIGIN,'졸업'||P_VALUE)을 출력.
SELECT STUDNO,NAME,CTNNFUN(GRADE,'학기'),  GRADE,IDNUM,HEIGHT
FROM STUDENT;
  • CTNNFUN(GRADE,'학기') : 프로시저에서 GRADE 는 P_ORIGIN 이며, CONCAT을 통하여 '학기' 를 붙인다.

 

  • 만약 GRADE가 1일경우 CTNNFUN는 1신입학기 가 출력된다.

 

 

IF문 출력결과


CASE

CASE문도 IF문과 비슷하다.

CASE [ 표현식 ] WHEN [ 결과 ] THEN [처리문] 의 형식이며

 CASE P_ORIGIN WHEN 1 THEN TEMP:=CONCAT(P_ORIGIN,'신입'||P_VALUE);

P_ORIGIN이 1일경우 P_ORIGIN, 신입' P_VALUE 를 출력 한다.

 

CREATE OR REPLACE FUNCTION CTNNFUN(P_ORIGIN IN VARCHAR2,P_VALUE IN VARCHAR2)RETURN VARCHAR2
IS
TEMP VARCHAR2(20):=NULL;
BEGIN
     CASE P_ORIGIN WHEN 1 THEN TEMP:=CONCAT(P_ORIGIN,'신입'||P_VALUE);
      WHEN 2 THEN TEMP:=CONCAT(P_ORIGIN,'중간'||P_VALUE);
      WHEN  3 THEN TEMP:=CONCAT(P_ORIGIN,'열심'||P_VALUE);
     ELSE  TEMP:=CONCAT(P_ORIGIN,'졸업'||P_VALUE);
     END CASE;
     RETURN TEMP;
END CTNNFUN;
  • CASE 문도 IF문과 같이 끝날때 END CASE로 끝낸다.

 

 

SELECT STUDNO,NAME,CTNNFUN(GRADE,'학기'),  GRADE,IDNUM,HEIGHT
FROM STUDENT;

CASE문 출력결과

'SQL' 카테고리의 다른 글

[PL/SQL] FOR  (0) 2021.08.10
[PL/SQL] RECORD  (0) 2021.08.06
[PL/SQL] DML(INSERT, UPDATE ,DELETE ) 연습  (0) 2021.08.05
[PL/SQL] 개념, 기본문법  (0) 2021.08.05
[ORACLE]JOIN ( INNER, OUTER) + ANSI  (0) 2021.08.01