Knowhow | NDS와 DBMS_SQL 중 무엇을 선택할 것인가?
지금까지 NDS와 DBMS_SQL를 이용해 동적 SQL을 처리하는 방법을 배웠다. 두 방식 모두 나름대로 장단점이 존재하는데, 어떤 때에 NDS 방식을 사용하고 언제 DBMS_SQL을 사용해야 하는 것일까?
11g 이전까지는 NDS의 경우 동적 쿼리문의 길이가 32KB가 넘어가면 사용할 수 없는 제약이 존재했다. PL/SQL에서 VARCHAR2의 최대 크기가 32KB(SQL에서는 4000 byte)인데, 동적 SQL이 문자열로 구성되다 보니 문자열 타입의 최대 크기인 32KB(32767 byte)까지만 사용할 수 있었던 것이다. 하지만 11g 부터는 NDS에서도 CLOB 타입을 지원하게 되어 이 크기 제한은 없어져 버렸다. PL/SQL 상의 CLOB 타입의 최대 크기는 대략 4GB 정도 되므로 실질적으로 동적 SQL 문장의 크기 제한은 사라져버린 것이나 다름 없다.
결론적으로 애기하면, 두 가지 중 어떤 방식을 사용할 것인지는 개발자 본인 선택의 몫이다. NDS 방식은 사용법도 간단하고 다양한 기능을 처리할 수 있으며 수행 성능 측면에서도 약간 우수한 장점이 있고, DBMS_SQL 패키지는 사용법이 복잡하지만 다양한 타입과 함수, 프로시저를 제공해 주기 때문에 이들을 이용해 NDS보다 더 많은 기능을 구현할 수 있다. 참고로 말하자면 필자는 기본적으로는 NDS 방식을 사용하며 좀더 정교하고 세련된 기능을 구현할 필요가 있을 때 DBMS_SQL 패키지를 사용하고 있다.