현상
JAVA SOURCE 생성문을 추출하여 to-be DB로 이관하는 과정에서, 생성문 내에 아래와 같은 JAVA 코드가 포함된 생성문을 수행할 경우 "Enter value for '____':" 메시지가 출력되며 쿼리를 수행할 수 없습니다.
예시 코드
inListByte[inListByteIdx] = newTempByte[i];
inListByteIdx++;
if((i + 1) % 16 == 0 && i != 0){
byteList.add(inListByte);
inListByte = new byte[16];
inListByteIdx = 0;
}
Java
복사
수행 예시
SQL> @ISU_CRYPT_BLOCK.sql
At line 179, column 48:
if((i + 1) % 16 == 0 && i != 0){
^
Enter value for 'i':
Java
복사
원인
& 문자는 변수 입력 프롬프트로 인식되기 때문에, ' & i ' 구문을 사용할 경우 변수를 찾으려 시도합니다. 이때 해당 변수가 없으면 "Enter value for i:" 메시지가 출력됩니다.
해결
SET DEFINE OFF; 수행 시 & 기호를 변수 치환용 기호가 아닌 일반 문자로 인식하게 되어, && 코드가 정상적으로 실행됩니다.
SQL> SET DEFINE OFF;
SQL> @ISU_CRYPT_BLOCK.sql
SQL
복사
참고
SQL> SET ESCAPE ON; 설정 후, ESCAPE '\' 등으로 회피할 수 있습니다.