DB2의 EGL 액세스에 대한 엑시트 작성
애플리케이션이 DB2® 데이터베이스에서
데이터를 작성하거나 검색할 때 실행되는 엑시트 코드를 작성할 수 있습니다.
각 엑시트의 용도는 날짜, 시간 및 시간소인 열에 해당하는 CHAR 유형 값의 값을 형식화하거나 변경하는 것입니다. 엑시트는 JBDC 드라이버 특성 또는 DB2 프리컴파일러 옵션 등의 다른 메커니즘을 통해서는 목적을 달성할 수 없는 경우에 특히 유용합니다.
여섯 가지 엑시트를 사용할 수 있습니다.
- 유형이 CHAR(10)인 EGL 필드에 해당하는 날짜 열의 입력 및 출력.
- 유형이 CHAR(8)인 EGL 필드에 해당하는 시간 열의 입력 및 출력.
- 유형이 CHAR(26)인 EGL 필드에 해당하는 시간소인 열의 입력 및 출력.
데이터베이스에 대한 입력에서, 호스트 변수의 컨텐츠는 영향을 받지 않습니다. 데이터베이스 열에 전송되는 값만 변경됩니다. 출력에서는 호스트 변수의 컨텐츠가 변경되지만 열 값은 영향을 받지 않습니다.
다음과 같이 COBOL 또는 Java™에 생성되는
데이터 액세스 코드에서 사용할 엑시트 코드를 작성할 수 있습니다.
- 데이터 액세스 코드가 COBOL에 생성되는 경우에는 각 엑시트를 자체 로드 모듈에 배치합니다. 세부사항은 "DB2 및 COBOL 생성에 대한 엑시트 작성"을 참조하십시오.
- 데이터 액세스 코드가 Java에 생성되는 경우 단일 Java 클래스에 엑시트를 작성합니다. 세부사항은 "DB2 및 Java 생성에 대한 엑시트 작성"을 참조하십시오.
전달되는 엑시트는 영향을 주지 않는 템플리트입니다.
sqlDataCode 값 포함을 통한 사용자 엑시트 사용
런타임 시에, 엑시트 코드는 sqlDataCode 특성에 특정 값을 사용하여 선언된 호스트 변수에 대해서만 호출됩니다.
다음 내용은 몇 가지 필드의 특성을 포함하는 예제 레코드 파트입니다.
Record TstabN type SQLRecord
{tableNames = [["ME.MYTABLE"]], fieldsMatchColumns = yes}
10 TS2 char(26) {column="TS2", isSqlNullable=yes, sqlDataCode=392};
10 TS1 char(26) {column="TS1", isSqlNullable=yes, sqlDataCode=392};
10 DATE1 char(10) {column="DATE1", isSqlNullable=yes, sqlDataCode=384};
10 TIME1 char(8) {column="TIME1", isSqlNullable=yes, sqlDataCode=388};
end
다음 예제에 표시되어 있는 바와 같이, SQL 레코드 외부의 필드 또한 호스트 변수로 사용할 수 있습니다.
dataitem tstype char(26) {sqlDataCode=392} end
dataitem datetype char(10) {sqlDataCode=384} end
dataitem timetype char(8) {sqlDataCode=388} end
다음 sqlDataCode 값은 모두 엑시트 호출을 발생시킵니다.
| sqlDataCode 값 | 널 입력 가능 | SQL 열 유형 |
|---|---|---|
| 384 385 |
YES NO |
DATE |
| 388 389 |
YES NO |
TIME |
| 392 393 |
YES NO |
TIMESTAMP |
EGL SQL 검색 기능을 사용하면 사용자를 위해 작성된 레코드 파트에 자동으로 sqlDataCode 값이 삽입되도록 환경 설정을 설정할 수 있습니다. 세부사항은 "SQL 검색에 대한 환경 설정의 설정"을 참조하십시오.
특정 필드에 대한 엑시트는 필드가 널인 경우 데이터베이스 입력 중에, 열이 널인 경우에는 데이터베이스 출력 중에 호출되지 않습니다.