[Oracle] PL/SQL 반복문

programmeaow·2022년 6월 2일
0

Database

목록 보기
2/3

✔️ PL/SQL이란?

PL/SQL : SQL의 확장된 개념, 절차적 프로그래밍 언어

PL/SQL은 블록 구조를 가지고 있다.

선언부 / 실행부 / 예외처리부 / END로 나누어 볼 수 있는데, 먼저 실행부에서 쓸 수 있는 반복문에 대해 알아보자.

참고 : PL/SQL 기초

- 반복문

반복문에는 loop , while , for 세 종류가 있다.

- loop 반복문

	loop 
		plsql 문장 + 조건식 업데이트 문장;
		exit 조건;
	end loop;

- while 반복문

	 while 조건식 loop
		plsql 문장;
	 end loop;

- for 반복문

	for 변수 in [reverse] start ..end loop
		plsql문장;
	end loop;

loop 를 사용하여 1~5까지 숫자를 순서대로 출력하는 코드를 작성해보자.

DECLARE
	num number(2) := 1;
BEGIN
	LOOP
		dbms_output.put_line(num);
		num := num+1;      -- 1씩 증가
	
		exit when num > 5; -- 5가 되면 종료
	end loop;
END;

//출력 : 1,2,3,4,5

while 을 사용하여 1~5까지 숫자를 순서대로 출력하는 코드를 작성해보자.

DECLARE
	num number(2) := 1;
BEGIN
	WHILE num <= 5 LOOP		-- 조건식
		dbms_output.put_line(num);	
		num := num + 1;		-- 증감식
	end LOOP;	
END;

//출력 : 1,2,3,4,5

for 을 사용하여 1~5까지 숫자를 순서대로 출력하는 코드를 작성해보자.
for 반복문은 reverse를 이용하여 오름차순, 내림차순으로 출력이 가능하다.

-- 오름차순
DECLARE
BEGIN
	FOR num IN 1..5 LOOP	
		dbms_output.put_line(num);
	end LOOP;
END;

//출력 : 1,2,3,4,5
-- 내림차순
DECLARE
BEGIN
	FOR num IN reverse 1..5 LOOP	
		dbms_output.put_line(num);
	end LOOP;
END;

//출력: 5,4,3,2,1





반복문을 응용하여 emp table에 있는 직원의 사원 번호를 입력 받으면, 해당 사원의 이름 글자 수 만큼 * 을 출력하는 로직을 구현해보자.
ex ) 7369 ( SMITH ) 입력 -> *****

DECLARE
	newempno emp.empno%TYPE := &n;
	newename emp.ename%TYPE;
	enamelen Number(10);
	star varchar(10);
BEGIN
	SELECT ename, length(ename)
		INTO newename, enamelen
	FROM EMP
	WHERE empno = newempno;

	FOR i IN 1..enamelen LOOP
		star := star || '*';
	end LOOP;

	dbms_output.put_line(newename || '의 글자 길이 : ' || star);
END;

DBeaver에서 &n을 실행하려면 :n으로 바꾸면 실행이 가능하다.
sqlplus에서 실행하여 SMITH의 사원 번호인 7369를 입력하면 * 5개가 출력되는 것을 확인할 수 있다.

DBeaver에서 실행하려 하면 계속 에러가 떠서 해결 방법을 찾아봐야 할 것 같다😥

profile
개발이란 뭘까

0개의 댓글