레이블이 PLSQL제어문인 게시물을 표시합니다. 모든 게시물 표시
레이블이 PLSQL제어문인 게시물을 표시합니다. 모든 게시물 표시

2021년 12월 24일 금요일

PLSQL 제어문,반복문, IF, LOOP, END LOOP, FOR LOOP, WHILE LOOP, PL/SQL동영상, 자바학원, 오라클학원, JAVA학원, ORACLE학원

 










PLSQL 제어문,반복문, IF, LOOP, END LOOP, FOR LOOP, WHILE LOOP, PL/SQL동영상


오라클 PL/SQL




제어문, 반복문


강의 : 이종철



PL/SQL IF문


[형식]

IF condition1 THEN

   Condition1이 만족하는 경우 실행할 문장

ELSIF condition2 THEN

 Condition2가 만족하는 경우 실행할 문장

ELSE

   이외의 경우 실행할 문장

END IF;



-- EMP 테이블에서 이름을 입력받아 급여가 3000보다 크면 'high sal' 

-- 2000보다 크면 'mid sal' 그밖에는 'low sal'을 출력하는 프로시저를 작성하세요.


SQL> SET SERVEROUTPUT ON

SQL> CREATE OR REPLACE PROCEDURE OJC16(v_ename emp.ename%TYPE)

    IS

    v_sal emp.sal%TYPE;

    BEGIN

      SELECT sal INTO v_sal

      FROM EMP

      WHERE ename = v_ename;

  

      IF v_sal >= 3000 THEN

       DBMS_OUTPUT.PUT_LINE('high sal...');

     ELSIF v_sal >= 2000 THEN

       DBMS_OUTPUT.PUT_LINE('mid sal...');

     ELSE

       DBMS_OUTPUT.PUT_LINE('low sal...');

     END IF;

   EXCEPTION

     WHEN NO_DATA_FOUND OR TOO_MANY_ROWS THEN

       DBMS_OUTPUT.PUT_LINE('Data 추출에러');

  END;

   /


프로시저가 생성되었습니다.


SQL> exec ojc16('SMITH')

low sal...


SQL> exec ojc16('KING')

high sal...


SQL> exec ojc16('없는사원')

Data 추출에러



BASIC LOOP문


  • LOOP~END LOOP 형태이며 무한루프이므로 출구가 있어야 한다.(EXIT or EXIT WHEN절)
  • LOOP COUNTER 변수 등은 직접 다루어야 한다.

 

[형식]

LOOP

  실행문장;

END LOOP;


-- LOOP ~ END LOOP, EXIT 이용한 예제

SQL> SET SERVEROUTPUT ON

SQL> DECLARE

       x number := 10;

    BEGIN

       LOOP

          DBMS_OUTPUT.PUT_LINE(x);

          x := x - 1;

          IF x < 1 THEN

             EXIT;

          END IF;

      END LOOP;

      DBMS_OUTPUT.PUT_LINE('x = ' || x);

   END;

   /


10

9

8

1

x = 0


-- LOOP ~ END LOOP, EXIT WHEN 이용한 예제

SQL> DECLARE

       x number := 10;

    BEGIN

       LOOP

          DBMS_OUTPUT.PUT_LINE(x);

          x := x - 1;

          EXIT WHEN x < 1;

       END LOOP;

       DBMS_OUTPUT.PUT_LINE('x = ' || x);

   END;

   /

10

9

8

1

x = 0



FOR LOOP문


  • LOOP~END LOOP 앞에 FOR 제어문을 가지므로 루프 카운터 변수가 필요없고 LOOP~END LOOP 안쪽에 출구 역시 필요없다.
  • 인덱스는 자동으로 선언되며 자동으로 1씩 증가하고 REVERSE라고 하면 상한값에서 초기값으로 -1씩 증가한다.(초기값과 상한값의 위치가 바뀌어서는 안된다.)


[형식]

FOR 인덱스 IN [REVERSE] 초기값 .. 상한값 LOOP

   실행문장;

END LOOP; 




-- FOR LOOP예제

SQL> SET SERVEROUTPUT ON

SQL> DECLARE

    BEGIN

      FOR x IN 1..10 LOOP

         DBMS_OUTPUT.PUT_LINE(x);

      END LOOP;

    END;

    /

1

10


-- FOR LOOP예제(REVERSE)

SQL> DECLARE

    BEGIN

      FOR x IN REVERSE 1..10 LOOP

         DBMS_OUTPUT.PUT_LINE(x);

      END LOOP;

    END;

    /

10

9



WHILE LOOP문


  • 조건이 만족하는 동안 LOOP~END LOOP를 실행하므로 별도의 출구는 필요없지만 루프 카운터 변수등은 선언해서 사용해야 한다.
  • 조건에 만족하지 않으면 반복문내 실행문이 한번도 실행되지 않는다.


[형식]

WHILE 조건 LOOP

   실행문장;

END LOOP;


SQL> SET SERVEROUTPUT ON

SQL> DECLARE

      x NUMBER := 10;

    BEGIN

      WHILE(x > 0) LOOP

        DBMS_OUTPUT.PUT_LINE(x);

        x := x - 1;

      END LOOP;

      DBMS_OUTPUT.PUT_LINE('x = ' || x);

    END;

   /

10

9

1

x = 0





#PLSQL, #제어문, #반복문, #PLSQLIF, #PLSQLLOOP, #PLSQL반복문, #PLSQL제어문, #PLSQL동영상, #PLSQL교육, #SQL학원, #SQL교육, #오라클학원, #오라클교육, PLSQL, 제어문, 반복문, PLSQLIF, PLSQLLOOP, PLSQL반복문, PLSQL제어문, PLSQL동영상, PLSQL교육, SQL학원, SQL교육, 오라클학원, 오라클교육, 


2021년 10월 16일 토요일

PL/SQL 제어문_IF문

 

15.1.3. PL/SQL 제어문






프로그래밍 언어 에서의 IF문,CASE문과 같이 PL/SQL 프로그래밍의 흐름을 제어할 수 있는 제어문에는 IF문, CASE문이 있습니다.


15.1.3.1. IF문


PL/SQL에서 IF문은 조건이 TRUE 일 때 코드를 실행하거나 조건이 FALSE로 평가되면 다른 코드를 실행하는 데 사용됩니다. 주의할 점은 프로그래밍 언어에서는 ELSEIF라고 쓰지만 PL/SQL에서는 ELSIF 라고 사용하는 부분이 다르며 IF문은 반드시 END IF;로 닫아 줘야 합니다.


<기본형식>

IF condition1 THEN

  result1

ELSIF condition2 THEN

   result2

ELSE 

  result

END IF;


  • condition이 참이 되는 THEN 이하가 실행 됩니다. 만약 조건이 만족할 때 아무것도 하지말라는 의미를 부여하려면 result 자리에 NULL 이라고 기술하면 됩니다.


IF문을 실습해 보겠습니다.

15.1.3.1.1 급여값을 비교하는 예제 실습 : IF

익명코드 블록으로 EMP테이블에서 급여(sal) 컬럼 값을 IF문으로 비교하는 예제 입니다. 


EMP 테이블에서 사번이 7369인 사원의 급여(sal)가 3000보다 크면 'high sal'

2000보다 크면 'mid sal' 그 밖에는 'low sal'을 출력하세요.


SET SERVEROUTPUT ON


DECLARE

   -- EMP 테이블의 SAL 컬럼과 타입이 같은 V_SAL 변수를 선언 합니다.

   V_SAL EMP.SAL%TYPE;

BEGIN

   -- BEGIN내의 SELECT문은 한건만 SELECT되야 하고 INTO절에서 받아줘야 합니다.

   SELECT  SAL INTO V_SAL

   FROM     EMP

   WHERE  EMPNO = 7369;


   IF V_SAL >= 3000 THEN

      DBMS_OUTPUT.PUT_LINE('high sal...' || V_SAL);

   ELSIF V_SAL >= 2000 THEN

      DBMS_OUTPUT.PUT_LINE('mid sal...' || V_SAL);

   ELSE

      DBMS_OUTPUT.PUT_LINE('low sal...' || V_SAL);

   END IF;

END;


<실행결과>

low sal...800


(C#교육동영상)C# ADO.NET 실습 ODP.NET/ODAC 설치 오라클 함수 호출 실습, C#학원, WPF학원, 닷넷학원, 자바학원

  (C#교육동영상)C# ADO.NET 실습  ODP.NET/ODAC 설치  오라클 함수 호출 실습, C#학원, WPF학원, 닷넷학원, 자바학원 https://www.youtube.com/watch?v=qIPU85yAlzc&list=PLxU-i...