[SQLD/P] Static SQL, Dynamic SQL, Exec SQL,

Hyo Kyun Lee·2022년 8월 26일
0

SQLD/P

목록 보기
19/82

1. Static SQL

Embeded SQL, 프로그램 runtime 시점에서 함께 실행되는 SQL문으로 실무에서는 DBIO 구조체라고도 한다. SQL query를 구조체로 컴파일하여 사용한다면 Static SQL이다.

말 그대로 내장한 SQL이므로 미리 구성한 SQL Query문을 실행하는 형태이며, 런타임시 삽입한 변수(세미콜론, ":")에 따라 쿼리 결과가 달라질 수 있다.

SQL은 실행 후 상태변수를 return 하며, NORMAL/ NOT FOUND/ ERROR 등의 상태를 전달한다.

내장된 SQL문은 현재의 프로그램 상태 및 변수에 맞추어 작성되는 경우가 많으므로, 프로그램 상태가 달라진다면 해당 SQL문을 전부 확인하고 수정해야 한다는 번거로움이 존재한다.

2. Dynamic SQL

찾아보니 Dynamic SQL의 종류 또한 여러가지였는데, 이 중 문자열 type으로 저장되는 형태의 Dynamic SQL을 알아보았다.

컴파일하지않고 문자열 형태로 저장되어, 프로그램 runtime 시 필요 부분을 빌드하고 해당 SQL문을 실행하도록 구성되어있는 형태의 SQL 형태이다.

여기서의 핵심은 컴파일하지 않는다는 점이고, 필요할 때마다 해당 문자열을 실행한다는 점에서 Static SQL과의 차이가 나는 부분이다.

애초에 컴파일하는 구조체 형태가 아니라, 문자열 형태로 저장하여 실행하므로 프로그램 상황이 달라지면 해당 문자열을 바꾸기만 하면 되므로 Static보다는 가볍고 관리가 용이하다고 볼 수 있다.

3. 유의사항

Java언어를 사용하면서 대부분은 Dynamic SQL을 사용하겠지만(Static SQL을 사용하는 경우는 거의 유료, ProC 등의 실무적인 상황에서 쓰이므로 일반 사이드 프로젝트 상황에서는 거의 쓰이지 않을 것으로 보임), 컴파일하는 부분을 경험하지 않는 이상은 Static과 Dynamic의 차이점을 거의 느끼지 못할 것 같다.

4. 참고자료

Oracle 공식문서에 기재된 Dynamic/Static SQL - https://docs.oracle.com/cd/A97630_01/appdev.920/a97269/pc_13dyn.htm
Dynamic SQL/ Static SQL - http://wiki.gurubee.net/display/DBSTUDY/Static+vs.+Dynamic+SQL
Static SQL - https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=star005&logNo=40114057502

0개의 댓글