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; /
 

 

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

반응형
Contents

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

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