sqlLib.sqlData(EGL 시스템 변수)
sqlData 시스템 변수는 많은 글로벌 사용 가능 필드를
포함하는 구조화된 레코드입니다. 이 레코드의 구조는 다음과 같습니다.
record sqlData type basicRecord
10 sqlca hex(272);
20 * hex(24);
20 sqlcode int;
20 * hex(4);
20 sqlerrmc char(70);
20 * hex(16);
20 sqlerrd int[6];
20 sqlwarn char(1)[11];
20 sqlstate char(5);
end
동일한 변수를 sysVar 라이브러리의 이전 위치에서 찾을 수도 있습니다. 그러나 sysVar의 변수는 범위가 현재 프로그램으로 제한됩니다. 예를 들어, programA가 programB를 호출하고 두 프로그램 모두 관계형 데이터베이스에 액세스하는 경우, 각 프로그램에는 sysVar.sqlData의 고유 사본이 있습니다. programB에 설정된 값은 programA로 돌아간 후에는 사용할 수 없습니다. 따라서 이러한 변수를 사용하는 경우, 변수의 이름을 완전히 규정하십시오(예: sqlLib.sqlData.sqlcode).
레코드에는 다음 개별 필드가 있습니다.
- sqlcode
- 프로그램이 관계형 데이터베이스에 액세스한 후의 상태 코드를 포함합니다.
- sqlerrmc
- sqlcode와 연관된 오류 메시지입니다.
- sqlerrd
- 이 여섯 개의 INT 변수는 다음과 같은 진단 정보를 제공합니다.
- sqlerrd[1]
- SQL 연결이 호출되고 성공한 경우, 여기에는 애플리케이션 코드 페이지에서 데이터베이스 코드 페이지로 변환될 때 혼합된 특성 데이터(CHAR 데이터 유형)의 길이에서 예상되는 최대 차이가 포함됩니다. 0 또는 1의 값은 확장이 없음을 표시하고 1보다 큰 값은 확장이 가능함을 표시하며 음수 값은 축소가 가능함을 표시합니다. SQL 프로시저에서 성공적으로 리턴되는 경우에는 SQL 프로시저의 리턴 상태 값이 포함됩니다.
- sqlerrd[2]
- SQL 연결이 호출되고 성공한 경우, 여기에는 데이터베이스 코드 페이지에서 애플리케이션 코드 페이지로 변환될 때 혼합된 특성 데이터(CHAR 데이터 유형)의 길이에서 예상되는 최대 차이가 포함됩니다. 0 또는 1의 값은 확장이 없음을 표시하고 1보다 큰 값은 확장이 가능함을 표시하며 음수 값은 축소가 가능함을 표시합니다. SQLCA가 하나 이상의 오류가 발생한 NOT ATOMIC 복합 SQL문의 결과인 경우, 값은 실패한 명령문 수로 설정됩니다.
- sqlerrd[3]
- PREPARE가 호출되고 성공하는 경우, 이 필드(또는 배열의 이 요소)에는 리턴할 행 수의 예상이 포함됩니다. INSERT, UPDATE, DELETE 또는 MERGE 후 여기에는 해당 조작을 위해 규정된 실제 행 수가 포함됩니다. 복합 SQL이 호출되는 경우 여기에는 모든 하위 명령문 행의 누적이 포함됩니다. CONNECT가 호출되는 경우 데이터베이스를 업데이트할 수 있으면 1이 포함되고 데이터베이스가 읽기 전용이면 2가 포함됩니다.
- OPEN 문을 호출한 경우 커서에 SQL 데이터 변경 명령문이 있으면 이 필드는 임베디드 삽입, 업데이트, 삭제 또는 병합 조작을 위해 규정된 행 수의 합계를 포함합니다.
- SQL 프로시저에 대한 CREATE PROCEDURE가 호출되고 SQL 프로시저 본문 구문 분석시 오류가 발견되는 경우, 오류가 발견된 행 번호를 포함합니다. 올바른 행 번호가 되려면 sqlca의 여섯 번째 바이트는 "L"이어야 합니다.
- sqlerrd[4]
- PREPARE가 호출되고 성공하는 경우, 여기에는 해당 명령문을 처리하는 데 필요한 자원의 상대 비용 예상이 포함됩니다.
복합 SQL이 호출되는 경우, 성공적인 하위 명령문 수의 계수가 포함됩니다. CONNECT가 호출되는 경우, 다음 코드 중 하나가 포함됩니다.
- 하향 레벨 클라이언트로부터 1단계 커미트의 경우 0
- 1단계 커미트의 경우 1
- 1단계 읽기 전용 커미트의 경우 2
- 2단계 커미트의 경우 3
- sqlerrd[5]
- 다음 두 조치의 결과로 삭제, 삽입 또는 업데이트된 행의 총 수를 포함합니다.
- 성공적인 삭제 조작 후 제한조건 적용
- 활성화된 트리거로부터 트리거된 SQL문 처리
- CONNECT가 호출된 경우 sqlerrd[5]에는 다음 인증 유형 값 중 하나가 포함됩니다.
- 0
- 서버 인증
- 1
- 클라이언트 인증
- 2
- DB2 Connect™를 사용하는 인증
- 4
- SERVER_ENCRYPT 인증
- 5
- 암호화와 함께 DB2 Connect를 사용하는 인증
- 7
- KERBEROS 인증
- 8
- KRB_SERVER_ENCRYPT 인증
- 9
- GSSPLUGIN 인증
- 10
- GSS_SERVER_ENCRYPT 인증
- 255
- 지정되지 않은 인증
- sqlerrd[6]
- 파티션된 데이터베이스의 경우, 오류 또는 경고가 발생한 파티션의 번호를 포함합니다. 오류 또는 경고가 발생하지 않은 경우, 이 필드에는 코디네이터 노드의 파티션 번호가 포함됩니다. 이 필드에 있는 번호는 db2nodes.cfg 파일의 파티션에 대해 지정된 것과 동일합니다.
- sqlwarn
- 11개의 경고 표시기로 구성된 세트입니다. 복합 SQL이 호출된 경우, 각 표시기에는
모든 하위 명령문에 대한 경고 표시기 세트의 누적이 포함됩니다. 이 배열에는 다음 표시기가 포함됩니다.
- sqlwarn[1]
- 다음 값 중 하나를 포함합니다.
- [blank]
- 다른 모든 표시기는 공백입니다.
- W
- 하나 이상의 다른 표시기가 공백이 아닙니다.
- sqlwarn[2]
- 다음 값 중 하나를 포함합니다.
- A
- CONNECT 또는 ATTACH가 성공했으며, 연결의 인증 이름이 8바이트보다 깁니다.
- N
- 널 종결자가 잘렸습니다.
- P
- sqlerrd[4]에 저장된 PREPARE 문 상대 비용 예상이 INTEGER에 저장될 수 있는 값을 초과했거나 1보다 작고, CURRENT EXPLAIN MODE 또는 CURRENT EXPLAIN SNAPSHOT 특수 레지스터가 NO가 아닌 값으로 설정되었습니다.
- W
- 호스트 변수에 지정될 때 문자열 열의 값이 잘렸습니다.
- sqlwarn[3]
- 함수의 인수에서 널값이 제거된 경우 W가 포함됩니다. 또한 마지막 SQL I/O 조작에서 프로그램을 위한 호스트 변수에 공간이 충분하지 않아서 데이터베이스 관리자가 문자 데이터 필드를 자른 경우에도 W가 포함됩니다. 논리식을 사용하여 특정 호스트 변수의 값이 잘렸는지 여부를 테스트할 수 있습니다. 자세한 정보는 "SQL 레코드를 위한 논리식"에서 trunc에 대한 참조를 참조하십시오.
- 호스트 변수가 숫자인 경우에는 잘림 경고가 제공되지 않습니다. 숫자의 소수 부분이 표시 없이 잘립니다. DB2® 데이터를 사용하는 경우, 숫자의 소수가 아닌 부분이 사용자 변수에 맞지 않으면 데이터베이스 관리자는 sqlcode에 -304를 리턴합니다.
- sqlwarn[4]
- 다음 값 중 하나를 포함합니다.
- W
- 열의 수가 호스트 변수의 수와 같지 않습니다.
- Z
- ASSOCIATE LOCATORS 문에 지정된 결과 세트 위치 지정자의 수가 프로시저에서 리턴된 결과 세트의 수보다 적습니다.
- sqlwarn[5]
- 준비된 UPDATE 또는 DELETE 문에 WHERE 절이 포함되어 있지 않으면 W를 포함합니다.
- sqlwarn[6]
- 나중에 사용하기 위해 예약되어 있습니다.
- sqlwarn[7]
- 날짜 계산의 결과가 불가능한 날짜를 피하도록 조정되면 W를 포함합니다.
- sqlwarn[8]
- CONNECT가 호출되고 성공하는 경우, DYN_QUERY_MGMT 데이터베이스 구성 매개변수가 사용되면 E를 포함합니다. DB2 데이터베이스를 사용할 때 날짜 또는 시간 값에 대한 산술 연산에서 올바르지 않은 결과를 정정하기 위해 조정된 경우 이 필드(또는 배열의 이 여소)는 W를 포함합니다.
- sqlwarn[9]
- 변환될 수 없는 문자가 대체 문자로 대체되면 W를 포함합니다.
- sqlwarn[10]
- 열 함수 처리 중에 오류가 있는 산술 연산식이 무시되었으면 W를 포함합니다.
- sqlwarn[11]
- SQLCA의 필드 중 하나에서 문자 데이터 값을 변환할 때 변환 오류가 있으면 W를 포함합니다.
- sqlstate
- 최신 SQL문의 결과를 표시하는 리턴 코드입니다.
세그먼트화된 대화의 값 저장 여부
NO
호환성
| 플랫폼 | 문제 |
|---|---|
| COBOL 생성 | sqlLib.sqlData는 지원되지 않습니다. |
| Java™ 생성 | Java는 sqlcode, sqlstate, sqlerrd[2], sqlerrd[3] 및 sqlwarn[2]만 설정합니다. Java에서 sqlca 데이터 구조는 각 I/O 조작과 함께 데이터베이스로 송수신되지 않으므로 EGL은 설정할 수 있는 모든 필드를 설정합니다. 사용자는 다른 필드를 수정할 수 있지만 EGL Java는 그들을 사용하지 않습니다. |