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 검색에 대한 환경 설정의 설정"을 참조하십시오.

특정 필드에 대한 엑시트는 필드가 널인 경우 데이터베이스 입력 중에, 열이 널인 경우에는 데이터베이스 출력 중에 호출되지 않습니다.