관리 메뉴

클라이언트/ 서버/ 엔지니어 "게임 개발자"를 향한 매일의 공부일지

SQL 고급 문법 6 - SQL 프로그래밍 2 : WHILE 문과 동적 SQL 본문

알고리즘 및 자료 관리/SQL

SQL 고급 문법 6 - SQL 프로그래밍 2 : WHILE 문과 동적 SQL

huenuri 2024. 10. 21. 11:28

이어서 SQL 프로그래밍 공부를 진행해 보겠다.


 

 

WHILE 문

프로그래밍에서 꼭 필요한 부분 중 하나가 반복이다. WHILE 문은 필요한 만큼 계속 같은 내용을 반복할 수 있다.

 

 

WHILE 문의 기본 형식

WHILE 문은 조건식이 참인 동안에 SQL 문잔들을 계속 반복한다.

 

 

 

1에서 100까지의 값을 모두 더하는 간단한 기능을 WHILE 문으로 구현해 보겠다.

 


 

 

 

WHILE 문의 응용

1부터 100까지의 합계에서 4의 배수를 제외시키려면 어떻게 해야 할까? 추가로 숫자를 더하는 중간에 합계가 1000이 넘으면 더하는 것을 그만두고, 1000이 넘는 순간의 숫자를 출력한 후 프로그램을 종료하고 싶다면 어떻게 해야 할까? 이런 경우 ITERATE 문과 LEAVE 문을 활용할 수 있다.

  • ITERATE[레이블] : 지정한 레이블로 가서 계속 진행한다
  • LEAVE[레이블] : 지정한 레이블을 빠져나간다. 즉, WHILE 문이 종료된다.

 

 

ITERATE 문은 프로그래밍 언어의 CONTINUE, LEAVER 문은 BREAK 문과 비슷한 역할을 한다.

 

 


 

 

 

 

동적 SQL

SQL 문은 내용이 고정되어 있는 경우가 대부분이다. 하지만 상황에 따라 내용 변경이 필요할 때 동적 SQL을 사용하면 변경되는 내용을 실시간으로 적용해 사용할 수 있다.

 

PREPARE와 EXECUTE

PREPARE는 SQL 문을 실행하지 않고 미리 준비만 해놓고, EXCURE는 준비한 SQL 문을 실행한다. 그리고 실행 후에는 DEALLOCATE PREPARE로 문장을 해제해 주는 것이 바람직하다.

 

 

미리 SQL을 준비한 후에 나중에 실행하는 것을 동적 SQL이라고 부른다.


 

 

 

 

동적 SQL의 활용

PREPARE 문에서는 ?로 향후에 입력될 값을 비워놓고, EXECUTE에서 USING으로 ?에 값을 전달할 수 있다. 다음 예제는 실무에서 종종 발생하는 경우이다. 보안이 중요한 출입문에서는 출입한 내역을 테이블에 기록해 놓는다. 이때 출입증을 태그 하는 순간의 날짜와 시간이 INSERT 문으로 만들어져 입력되도록 한다.

 


 

 

 

단원 마무리하기

 

 

 

 

 

3번은 마지막에 IF가 아니라 CASE라고 써야 한다.


 

 

학습을 마치고

이렇게 while 문과 동적 SQL 활용하는 방법까지 실습하며 공부해 보았다. 생각보다 이 단원 학습을 하는데 시간이 많이 걸려서 2시간 반 정도 걸렸다. 문제도 잘 풀었으니 이제 다음 장으로 넘어가도 될 것 같다.

그래도 지난번에 안되었던 부분을 다시 시도하며 끝까지 포기하지 않고 공부를 이어갈 수 있어서 정말 뿌듯했다.