(1) Static SQL
- Static SQL이란, String형 변수에 담지 않고 코드 사이에 직접 기술한 SQL문을 말합니다.
(2) Dynamic SQL
- Dynamic SQL이란, String형 변수에 담아서 기술하는 SQL문을 말합니다.
String 변수를 사용하므로 조건에 따라 SQL문을 동적으로 바꿀 수 있고, 또는 런타임 시에 사용자로부터 SQL문의 일부 또는 전부를 입력 받아서 실행할 수도 있습니다.
따라서 [PreCompile] 시 Syntax, Semantics 체크가 불가능 합니다.
- Dynamic SQL을 만나면 [PreCompiler]는 그 내용을 확인하지 않고 그대로 통과시킵니다.
Pro*C환경에서 개발해 본 독자라면 스칼라 서브쿼리, 분석 함수, ANSI 조인문 등을 사용했을 때 [PreComile] 과정에서 에러가 나는 경험을 했을 것입니다.
Semantic 체크는 DB 접속을 통해 이루어지지만 Syntax 체크만큼은 [PreCompiler]에 내장되 SQL 파서를 이용하는데, 위 구문들을 사용하면 현재 사용 중인 [PreCompiler]가 그것들을 인식하지 못해 에러를 던지는 것입니다.
Posted by 뚜벅이조