hyeonga_code
Database_83_PL/SQL_제어 구조_조건 제어문 본문
-- PL/SQL 제어 구조
-- 실행 흐름 제어
-- 조건 IF 문과 루프 제어 구조를 사용하여 명령문의 논리적 실행 흐름을 변경할 수 있습니다.
-- 조건 제어문
-- IF 문
/*
IF condition THEN
statements;
[ ELSIF condition THEN -- 추가 조건을 적용합니다.
statements; ]
[ ELSE
statements; ]
END IF;
*/
-- 다른 절차적 언어의 IF문의 구조와 유사합니다.
-- 조건에 따라 선택적으로 작업을 수행할 수 있습니다.
-- 단순 IF문 : IF-THEN-END IF
/*
IF condition THEN
statements;
END IF;
*/
-- 조건이 TRUE일 경우에만 변수에 값을 할당합니다.
-- NULL, FALSE일 경우 명령문을 무시합니다.
-- IF-THEN-ELSE-END IF
/*
IF condition1 THEN
statement1;
ELSE
statement2;
END IF;
*/
-- IF-THEN-ELSIF-END IF
/*
IF condition1 THEN
sequence_of_statements1;
ELSIF condition2 THEN
sequence_of_statements2;
ELSE
sequence_of_statements3;
END IF;
*/
-- IF 문의 NULL 값
-- 조건이 TRUE일 경우에만 변수에 값을 할당합니다.
-- NULL 값이면 ELSE 절을 실행합니다.
-- IF문
SET SERVEROUTPUT ON;
DECLARE
v_myage number:=31;
BEGIN
IF v_myage < 11
THEN
DBMS_OUTPUT.PUT_LINE(' I am a child ');
END IF;
END;
/
/*
PL/SQL 프로시저가 성공적으로 완료되었습니다.
-- 예제 조건이 FALSE이므로 명령문을 무시합니다.
*/
-- IF ELSE 문
-- ELSE 대신 ELSIF를 사용해도 무관합니다.
DECLARE
v_myage number:=31;
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 프로시저가 성공적으로 완료되었습니다.
*/
-- ELSIF문
DECLARE
v_myage number:=31;
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 프로시저가 성공적으로 완료되었습니다.
*/
-- IF문의 NULL 값
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 프로시저가 성공적으로 완료되었습니다.
*/
-- CASE 문
/*
1)
CASE selector
WHEN expression1 THEN result1
[WHEN expression2 THEN result2
...
WHEN expressionN THEN resultN]
[ELSE resultN+1]
END;
2)
CASE
WHEN search_condition1 THEN result1
WHEN search_condition2 THEN result2
...
WHEN search_conditionN THEN resultN
[ELSE resultN+1;]
END;
*/
-- 결과를 선택하고 반환합니다.
-- 결과를 선택할 때 해당 값이 여러 조건 중 하나를 선택하는 데에 사용되는 선택자를 통해 선택합니다.
-- 치환 변수를 사용하여 입력받은 등급을 평가합니다.
SET VERIFY OFF
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 || ' Appraisal ' || v_appraisal);
END;
/
-- 검색된 CASE 표현식으로 작성합니다.
SET VERIFY OFF
DECLARE
v_grade CHAR(1):=UPPER('&grade');
v_appraisal VARCHAR2(20);
BEGIN
v_appraisal:=CASE
WHEN v_grade = 'A' THEN 'Excellent'
WHEN v_grade = 'B' THEN 'Very Good'
WHEN v_grade = 'C' THEN 'Good'
ELSE 'No such grade'
END;
DBMS_OUTPUT.PUT_LINE ('Grade: '|| v_grade || ' Appraisal ' || v_appraisal);
END;
/
/*
-- A 입력
Grade: A Appraisal Excellent
-- B 입력
Grade: B Appraisal Very Good
-- C 입력
Grade: C Appraisal Good
-- E 입력
Grade: E Appraisal No such grade
PL/SQL 프로시저가 성공적으로 완료되었습니다.
*/
'Oracle Database' 카테고리의 다른 글
Database_85_PL/SQL_제어 구조_CURSOR (0) | 2023.08.31 |
---|---|
Database_84_PL/SQL_제어 구조_반복 제어문 (0) | 2023.08.31 |
Database_82_PL/SQL_변수 사용, 실행문 작성 (0) | 2023.08.30 |
Database_81_PL/SQL_변수 선언, 스칼라 데이터, 조합 데이터, 참조 데이터, 부울 변수, 바인드 변수, %TYPE, %ROWTYPE (0) | 2023.08.30 |
Database_80_PL/SQL_개요 (0) | 2023.08.30 |