DB2 및 Java 생성에 대한 엑시트 작성
이 주제에서는 "DB2®의 EGL 액세스에 대한 엑시트 작성"을 확장하며, 이 내용은 Java™ 생성에만 적용됩니다.
소스 코드
기본적으로 실행되는 엑시트 코드는 com.ibm.etools.egl.java.runtime_version(여기서 version은 제품 버전)에 있는 fda7.jar 파일에 있습니다. 클래스 이름은 EglDatabaseExits입니다.
다음 표에는 해당 클래스에 있는 메소드가 나열되어 있습니다.
| 메소드 이름 | 용도 | 입력 및 출력 유형 |
|---|---|---|
| dateExitToDB | 데이터베이스 입력 전에, 유형이 DATE인 호스트 변수로부터 데이터베이스에 지정될 값을 수정합니다. | 문자열 |
| dateExitFromDB | 데이터베이스 입력 후에, 유형이 DATE인 호스트 변수에 삽입될 값을 수정합니다. | 문자열 |
| timeExitToDB | 데이터베이스 입력 전에, 유형이 TIME인 호스트 변수로부터 데이터베이스에 지정될 값을 수정합니다. | 문자열 |
| timeExitFromDB | 데이터베이스 입력 후에, 유형이 TIME인 호스트 변수에 삽입될 값을 수정합니다. | 문자열 |
| timestampExitToDB | 데이터베이스 입력 전에, 유형이 TIMESTAMP인 호스트 변수로부터 데이터베이스에 지정될 값을 수정합니다. | 문자열 |
| timestampExitFromDB | 데이터베이스 입력 후에, 유형이 TIMESTAMP인 호스트 변수에 삽입될 값을 수정합니다. | 문자열 |
package egl.io.sql;
public class EglDatabaseExits
{
/**
* Does custom formatting of a string used as input to a DATE column.
*
* @param input - the value from EGL.
* @return a string in the format which will then be formatted
by StrLib.defaultDateFormat.
*/
public static String dateExitToDB( String input ) { return input; }
/**
* Does custom formatting of a string value fetched from a DATE column.
*
* @param input - the value from the DATE column, formatted
according to StrLib.defaultDateFormat.
* @return a string, will be assigned to an EGL variable.
*/
public static String dateExitFromDB( String output ) { return output; }
/**
* Does custom formatting of a string used as input to a TIME column.
*
* @param input - the value from EGL.
* @return a string in the format that will then be formatted
by StrLib.defaultTimeFormat.
*/
public static String timeExitToDB( String input ) { return input; }
/**
* Does custom formatting of a string value fetched from a TIME column.
*
* @param input - the value from the TIME column, formatted
according to StrLib.defaultTimeFormat.
* @return a string which will be assigned to an EGL variable.
*/
public static String timeExitFromDB( String output ) { return output; }
/**
* Does custom formatting of a string used as input to a TIMESTAMP column.
*
* @param input - the value from EGL.
* @return a string in the format which will then be formatted
by StrLib.defaultTimestampFormat.
*/
public static String timestampExitToDB( String input ) { return input; }
/**
* Does custom formatting of a string value fetched from a TIMESTAMP column.
*
* @param input - the value from the TIMESTAMP column, formatted
according to StrLib.defaultTimestampFormat.
* @return a string, will be assigned to an EGL variable.
*/
public static String timestampExitFromDB( String output ) { return output; }
}
표시되어 있는 바와 같이, 날짜, 시간 및 시간소인에 설정하는 마스크는 이러한 엑시트와의 사이에서 전송되거나 수신되는 데이터에 영향을 줍니다. 이러한 마스크는 코드에 StrLib.defaultDateFormat, StrLib.defaultTimeFormat 및 StrLib.defaultTimeStampFormat 변수를 설정하여 설정할 수 있습니다. 해당 변수는 Java 런타임 특성으로부터 기본값을 수신할 수 있습니다. 세부사항은 이 주제의 끝에 나열되어 있는 참조 주제를 참조하십시오.
예제 및 로직 플로우
get myrec with #sql{
SELECT COL1 FROM TBL WHERE :dateChar1 = '2010-04-01' }
into dateChar2;
- dateChar1 필드의 값을 가져옵니다.
- 이 값을 EglDatabaseExits.dateExitToDB 메소드에 전달합니다.
- 이 메소드에서 리턴한 값으로부터 JDBC Date 오브젝트를 작성합니다. 이 오브젝트 작성에는 StrLib.defaultDateFormat 변수에 의해 유도되는 문자열 대 날짜 변환이 사용됩니다.
- 데이터베이스와 상호작용할 때 JDBC Date 오브젝트를 사용합니다.
- COL1의 값을 데이터베이스에서 가져옵니다. 이 값은 JDBC Date 오브젝트입니다.
- 이 오브젝트로부터 문자열을 작성합니다. 이 오브젝트 작성에는 StrLib.defaultDateFormat 변수에 의해 유도되는 날짜 대 문자열 변환이 사용됩니다.
- 이 문자열을 EglDatabaseExits.dateExitFromDB 메소드에 전달합니다.
- 이 메소드에서 리턴한 값을 dateChar2 필드에 지정합니다.
사용 시 참고
사용자 정의 EglDatabaseExits 클래스를 사용하는 생성된 Java 코드를 디버그하거나 실행하려면 해당 클래스를 클래스 경로에서 EGL Java 런타임 jar 파일인 fda7.jar보다 이전에 배치하십시오. EGL 디버거에서 클래스 경로 환경 설정을 사용하거나 프로젝트의 Java 빌드 경로 특성을 사용할 수 있습니다.
일반적으로 Eclipse에서 생성된 Java 일괄처리 프로그램의 클래스 경로를 설정하는 가장 간단한 방법은 프로젝트의 Java 빌드 경로 특성을 사용하는 것입니다. Eclipse 외부에서는 CLASSPATH 환경 변수 또는 -classpath 명령행 인수를 사용하십시오.
생성된 코드를 컴파일할 때는 클래스 경로에 사용자 정의 EglDatabaseExits 클래스가 필요하지 않습니다.
Apache Tomcat 서버 또는 WebSphere® Application Server에서 생성된 Java 코드를 디버그하거나 실행하려면 사용자 정의 클래스를 WEB-INF/classes 폴더의 배치 웹 프로젝트에 배치하십시오. 두 서버는 모두 fda7.jar 파일이 있는 WEB-INF/lib 폴더를 검색하기 전에 이 폴더를 검색합니다.