데이터베이스 PL/SQL 제어문 - 조건문
제어문
pl / sql은 일종의 프로그래밍 언어와 마찬가지이기 때문에 제어문을 작성할 수 있다. 기본적으로 제어문에는 조건문과 반복문이 존재한다. 먼저 조건문에 대해서 알아보도록 하겠다. 여기서 조심할 점은 다른 프로그래밍 언어와 달리 pl/sql은 () 등을 잘 사용하지 않기 때문에 문법을 조심하도록 하자. 그리고 ‘=’연산자의 경우 대입 연산자가 아닌 비교 연산자라는 것을 명심하자. 대입 연산의 경우 ‘:=’를 사용하고 있다.
조건문
조건문은 pl / sql 역시 if문을 사용한다. 하지만 ()를 사용하지 않기 때문에 end if로 조건문의 종료를 정의하고, 조건부 입력 후 then을 통해 실행부임을 알려주도록 해야한다.
참고로 boolean 자료형은 사실 데이터베이스에서는 없는 자료형이다.하지만 pl/sql에서 제어문을 사용하기 위해 만들었다.
이제 두 값을 비교하는데 n1와 n2는 다른 값을 가지기 때문에 false가 될 것이고, 다르다가 출력된다.
조건문 중첩
선택적 if - elsif
제어문이 중첩된다는 것은 결국 다른 프로그래밍 언어처럼 선택적 if문을 구성할 수도 있다는 것을 나타낸다. 그리고 pl/sql에서는 이를 elsif라는 것을 사용한다. 다른 언어의 else if와 기능은 동일하다.
문제
점수를 입력받아서 학점을 출력하는 스크립트 작성하기
지금까지 배운 제어문을 활용하여 학점을 출력하는 스크립트문을 작성해보도록 하자. 먼저 입력을 받아야 하기 때문에 이에 대한 prompt 메시지를 설정하고, 대체 변수를 가져오자. 그리고 해당 변수를 v_score에 저장하여 이 값을 통해서 조건에 따른 학점을 가져오겠다.
스크립트문을 통한 데이터 삽입
스크립트문을 통해 데이터 삽입 역시 가능하다. 데이터를 삽입할 emp2라는 테이블을 하나 만들자. 그리고 방금 다뤘던 조건문을 함께 사용해보도록 하겠다.
그리고 시퀸스도 하나 만들어주도록 하겠다. 시퀸스를 만드는 이유는 시퀸스에 대해서 다룰 때 중복되지 않는 특성을 이용하여 primary key로 사용한다고 말했었다. 테이블에 데이터를 삽입할 때 시퀸스를 사용하여 primary key인 사번을 입력하겠다.
이제 스크립트를 작성하자. 먼저 이름, 급여, 부서번호에 대한 정보를 입력받는다. 그리고 이렇게 입력받은 데이터를 변수에 저장하고, 해당 변수를 이용하여 insert문을 만든다. 그리고 이 때 제어문 하나를 삽입하여 특정 부서에 대해서는 임금을 20프로 상승시킨다고 가정해보자.
이 때, empno에 대해서는 시퀸스를 받아와 nextval를 호출하고 있다. 그리고 마지막으로 insert문에 대해서 작성할 시 반드시 commit을 호출하여 테이블을 동기화시키는 것을 까먹어서는 안된다.
해당 스크립트문을 데이터베이스 서버에서 호출하고 테이블을 검색하도록 해보자.
데이터를 여러번 입력하면, 사번은 알아서 1씩 증가하며 데이터가 입력되고, commit까지 되기 때문에 다른 세션에서도 이를 똑같이 확인할 수 있다.
댓글
댓글 쓰기