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신입학기 가 출력된다.
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;
'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 |