Database/Oracle

[Oracle]PL/SQL FOR문

  • -
반응형
PL/SQL(Procedual Language)

PL/SQL은 오라클 DBMS에서 SQL 언어를 확장하기 위해 사용하는 프로그래밍 언어 중 하나이다.(위키 참고)

SQL은 비절차언어인 반면, PL/SQL은 영문 뜻대로 절차지향 프로그래밍 언어이다.

 

SQL로 다양한 처리를 할 수 있지만 그 한계(?)를 PL/SQL로 해결할 수 있다. 변수를 선언하거나 for문, 값을 리턴하는 등 프로그래밍적 요소를 추가해서 말이다.

 

오늘은 FOR문에 대해 정리를 해놓으려 하는데 그 중에서도 테이블의 ROW 수를 이용한 FOR문일반적인 상수를 이용한 FOR문이다.

 

먼저 테이블의 ROW 수만큼 FOR문을 돌리는 방법이다.

[변수]  [데이터 타입]        -- 변수(입출력 변수가 아닐 경우 DECLARE 영역 밖에 선언되어도 무방)

BEGIN

 -- 테이블 ROW 수 만큼 반복
FOR [변수명] IN
(
[테이블]
)
LOOP
[반복 수행문]
END LOOP;

END;
/

 

예로, PERSON이라는 변수에 MEMBER 테이블의 회원이름을 연속적으로 입력하려고 한다.

아래 쿼리를 보면 RP.MNAME이 RP라는 변수 안에 MNAME이라는 컬럼 값을 넣은 것을 예상할 수 있을 것이다.

즉 MEMBER라는 테이블의 아래와 같은 데이터가 있을 때

 MEMBER
 1   김민수
 2  조현우  
 3  이승우
 4  박지민

 

 FOR문을 통해 PERSON 안에는 "김민수조현우이승우박지민" 이런 형태로 데이터가 입력된다.

PERSON  VARCHAR2(1000);        -- 변수(입출력 변수가 아닐 경우 DECLARE 영역 밖에 선언되어도 무방)

BEGIN

 -- 테이블 ROW 수 만큼 반복
FOR RP IN
(
  SELECT MNAME
  FROM   MEMBER
)
LOOP
  PERSON := PERSON||RP.MNAME;
END LOOP;

END;
/
 

 

다음은 단순히 상수로 반복을 시키는 방법이다.

반복문에서 사용될 변수는 DECLARE에서 선언되면 안되며, 초기값부터 최종값까지 우리가 흔히 사용하는 for문처럼 사용된다고 생각하면 된다.

LOOP문 안쪽에는 반복될 연산을 입력해주면 된다.

DECLARE

  [변수]  [데이터 타입]

BEGIN

  FOR [반복문에서 사용될 변수] IN [초기값]..[최종값]
  LOOP
    [반복 수행문]
  END LOOP;

END;
/

 

아래는 구구단의 9단을 출력하는 예이다. 참고하시길..

DECLARE

  GUGUD  NUMBER;        

BEGIN

  NUMBER := 9;

  FOR i IN 1..9
  LOOP
    DBMS_OUTPUT.PUT_LINE ( NUMBER || '*' || i || '=' || NUMBER*i);
  END LOOP;

END;
/
 

 

+ 피드백은 언제나 환영입니다 :)

반응형

'Database > Oracle' 카테고리의 다른 글

[Oracle]ALL_OBJECTS 사용  (1) 2018.07.20
[Oracle]TO_CHAR  (0) 2018.07.17
[Oracle]트리거(Trigger)의 사용  (0) 2018.07.13
[Oracle]데이터 복구(TIMESTAMP)  (0) 2018.07.12
[Oracle]시간 계산  (0) 2018.07.09
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.