pureQuery가 아닌 API 응용프로그램이 SQL문을 정적으로 실행할 때
문제점의 원인이 될 수 있는 상황 또는 코딩 사례
pureQuery가 아닌 API 응용프로그램에 다음 상황 중 하나에 이르는 코드가 포함된 경우,
해당 프로그램이 정적 SQL에 대해 제대로 작동하지 않을 수 있습니다.
SQL을 캡처할 때 pureQuery Log 유틸리티를 사용하십시오.
이 유틸리티가 로그하는 메시지를 사용하여 정적 SQL에 대한 응용프로그램의
호환성 레벨을 판별할 수 있습니다.
DB2® 데이터베이스에 대해 실행되는
SQL문을 캡처할 때 캡처 프로세스는 DB2 특수 레지스터에 대한 변경사항을
로그합니다. 일반적으로 사용되고 SQL문에 의해 리턴되는 데이터에 영향을 미칠 수 있는
특수 레지스터에 대한 변경사항도 pureQueryXML 파일에 캡처됩니다. pureQuery Runtime이
특수 레지스터 변경사항을 추적하는 방법에 대한 정보는 관련 링크를 참조하십시오.
DB2 패키지에 대한 EXECUTE 권한 부여
SQL을 동적으로 실행하려면 사용자에게는 특정 데이터베이스
오브젝트에 대한 특권이 필요합니다. SQL을 정적으로 실행하려면 사용자에게는
DB2 패키지에 대한 EXECUTE 특권이 필요합니다. 필요한 특권 범위에
존재하는 이러한 차이점을 사용자는 잘 알아둬야 합니다.
정적 SQL문이 참조하는 데이터베이스 오브젝트에 영향을 주는 SQL DDL문
DDL(Data Definition Language)문이 DML(Data Manipulation Language)문이 참조하는
DBMS 오브젝트를 작성, 삭제(drop) 또는 변경하는 경우 SQL DDL문은 정적으로 실행되는
DML문에 대한 문제점의 원인이 될 수 있습니다. 문제점은 DDL 및 DML문이 바인드된 후
DDL문이 한 번만 실행되는 경우에도 발생할 수 있습니다.
특수 레지스터를 설정하는 SQL문
응용프로그램이 정적으로 실행될 때
여러 SET문이 문제점을 일으킬 수 있습니다. 바인드 옵션을 사용하여 특수 레지스터를 설정하십시오.
VALUES문
Linux®, UNIX® 및 Windows®용
DB2 데이터베이스는 동적 실행을 지원하는 양식의 VALUES문을
정적으로 실행할 수 없습니다. 또한 정적 실행을 지원하는 양식의 VALUES문을
동적으로 실행할 수 없습니다.
XQuery문
Linux, UNIX 및 Windows용 DB2 데이터베이스 버전
9.5는 XQuery문의 정적 실행이 아닌 동적 실행을 지원합니다.