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문 처리
복합 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

호환성

표 1. sqlData에 대한 호환성 고려사항
플랫폼 문제
COBOL 생성 sqlLib.sqlData는 지원되지 않습니다.
Java™ 생성 Java는 sqlcode, sqlstate, sqlerrd[2], sqlerrd[3]sqlwarn[2]만 설정합니다. Java에서 sqlca 데이터 구조는 각 I/O 조작과 함께 데이터베이스로 송수신되지 않으므로 EGL은 설정할 수 있는 모든 필드를 설정합니다. 사용자는 다른 필드를 수정할 수 있지만 EGL Java는 그들을 사용하지 않습니다.