이 문서는 지원되지 않는 PostgreSQL 버전에 대한 것입니다.
당신은 다음과 같은 페이지를 보고 싶을 수도 있습니다.현재버전 또는 위에 나열된 다른 지원 버전 중 하나를 사용하세요.

6.3. 토토 꽁 머니 사용ecpg

이 섹션에서는 다음을 사용하는 방법을 설명합니다.ecpg도구.

6.3.1. 전처리기

전처리기가 호출됩니다.ecpg. 설치 후에는 다음 위치에 있습니다.포스트그레 빈/디렉토리.

6.3.2. 도서관

ecpg라이브러리가 호출되었습니다.libecpg.a또는libecpg.so. 또한 라이브러리는libpq다음과 통신하기 위한 라이브러리포스트그레스서버이므로 당신은 귀하의 프로그램을 다음과 연결해야 합니다.-lecpg -lpq.

라이브러리에는 "숨겨진" 몇 가지 메소드가 있지만 언젠가는 매우 유용할 수 있습니다.

  • ECPG디버그(int켜짐, 파일 *스트림)디버그 로깅을 켭니다. 0이 아닌 첫 번째 인수로 호출되는 경우. 디버그 로깅 에 완료되었습니다.스트림. 대부분SQL문은 다음을 기록합니다. 인수 및 결과.

    가장 중요한 것 (ECPGdo) 거의 모든 경우에 호출됩니다.SQL문은 두 가지 모두를 기록합니다. 확장된 문자열, 즉 모든 입력이 포함된 문자열 변수가 삽입되었으며 결과는포스트그레스서버. 이것은 매우 오류를 검색할 때 유용합니다.SQL문장.

  • ECPG상태()이 토토 꽁 머니은 데이터베이스에 연결되어 있으면 TRUE를 반환하고, 연결되어 있으면 FALSE를 반환합니다. 아닙니다.

6.3.3. 오류 취급

다음에서 오류를 감지하려면포스트그레스서버는 한 줄을 포함합니다 좋아요

exec sql include sqlca;
파일의 포함 섹션에 있습니다. 이는 다음을 정의합니다. 구조체 및 이름이 있는 변수sqlca다음과 같습니다:
구조체 sqlca

 숯 sqlcaid[8];
 긴 sqlabc;
 긴 SQL코드;
 구조체

  int sqlerrml;
  숯 sqlerrmc[70];
  sqlerrm;
 숯 sqlerrp[8];
 긴 sqlerrd[6];
 /* 0: 비어 있음 */
 /* 1: 해당되는 경우 처리된 튜플의 OID */
 /* 2: INSERT, UPDATE에서 처리된 행 수 */
 /* 또는 DELETE 문 */
 /* 3: 비어 있음 */
 /* 4: 비어 있음 */
 /* 5: 비어 있음 */
 숯 sqlwarn[8];
 /* 0: 하나라도 'W'이면 'W'로 설정 */
 /* 1: 'W'가 하나 이상의 문자열인 경우 */
 /* 값이 잘렸을 때 */
 /* 호스트 변수에 저장됩니다.                  */
 /* 2: 비어 있음 */
 /* 3: 비어 있음 */
 /* 4: 비어 있음 */
 /* 5: 비어 있음 */
 /* 6: 비어 있음 */
 /* 7: 비어 있음 */
 char sqlext[8];
 sqlca;

마지막에 오류가 발생한 경우SQL그럼 진술sqlca.sqlcode0이 아닐 것입니다. 만일sqlca.sqlcode0보다 작으면 이것은 데이터베이스와 같은 일종의 심각한 오류입니다. 정의가 제공된 쿼리와 일치하지 않습니다. 보다 큰 경우 0이면 이는 테이블에 포함되지 않은 것과 같은 정상적인 오류입니다. 요청된 행입니다.

sqlca.sqlerrm.sqlerrmc에는 다음을 설명하는 문자열이 포함됩니다. 오류. 문자열은 소스의 줄 번호로 끝납니다. 파일.

발생할 수 있는 오류 목록:

-12, %d줄에 메모리가 부족합니다.

일반적으로 발생하지 않습니다. 이것은 당신이 가상 메모리가 소진되었습니다.

-200, %d행에서 지원되지 않는 유형 %s.

일반적으로 발생하지 않습니다. 이는 다음과 같은 징후입니다. 전처리기가 라이브러리에서 뭔가를 생성했습니다. 에 대해 모른다. 아마도 당신은 호환되지 않는 실행 중입니다 전처리기 및 라이브러리의 버전입니다.

-201, 인수 줄 %d이(가) 너무 많습니다.

이것은 다음을 의미합니다포스트그레더 많은 인수를 반환했습니다. 일치하는 변수가 있는 것보다 아마도 당신은 에서 몇 가지 호스트 변수를 잊어버렸습니다.INTO :var1,:var2-목록.

-202, 인수 줄 %d이(가) 너무 적습니다.

이것은 다음을 의미합니다포스트그레스더 적은 수를 반환했습니다. 호스트 변수보다 인수가 더 많습니다. 아마도 당신은 에 호스트 변수가 너무 많습니다.INTO :var1,:var2-목록.

-203, 일치하는 라인 %d이(가) 너무 많습니다.

이는 쿼리가 여러 줄을 반환했음을 의미합니다. 그러나 지정된 변수는 배열이 아닙니다.선택당신은 아마도 그렇지 않았을 것입니다 독특해요.

-204, 형식이 잘못된 int 유형: %s 라인 %d.

이것은 호스트 변수가 다음과 같다는 것을 의미합니다.int유형 및 필드포스트그레데이터베이스가 다른 유형입니다 로 해석될 수 없는 값이 포함되어 있습니다.int. 도서관은스트톨이 변환을 위해.

-205, 형식이 올바르지 않은 부호 없는 유형: %s 라인 %d.

이것은 호스트 변수가 다음과 같다는 것을 의미합니다.부호 없는 정수유형 및 필드포스트그레스데이터베이스는 다음과 같습니다. 다른 유형이며 변경할 수 없는 값을 포함하고 있습니다. 로 해석됨부호 없는 정수. 는 도서관 용도strtoul이것을 위해 전환.

-206, 형식이 잘못된 부동 소수점 유형: %s 라인 %d.

이것은 호스트 변수가 다음과 같다는 것을 의미합니다.플로트유형 및 필드포스트그레데이터베이스가 다른 유형입니다 로 해석될 수 없는 값이 포함되어 있습니다.플로트. 도서관은스트르토드이 변환을 위해.

-207, %s를 %d행에서 bool로 변환할 수 없습니다.

이것은 호스트 변수가 다음과 같다는 것을 의미합니다.부울유형 및 필드포스트그레스데이터베이스는 't'도 아니고 't'도 아닙니다. 'f'.

-208, 빈 쿼리 줄 %d.

포스트그레스반환됨 PGRES_EMPTY_QUERY, 아마도 쿼리가 실제로 비어있습니다.

-220, %d행에 %s 연결이 없습니다.

프로그램은 연결되지 않은 연결에 접근을 시도합니다. 존재합니다.

-221, %d번 라인에 연결되지 않았습니다.

프로그램은 다음과 같은 연결에 액세스하려고 시도합니다. 존재하지만 열려 있지 않습니다.

-230, %d행의 명령문 이름 %s이(가) 잘못되었습니다.

당신이 토토 꽁 머니하려는 명령문은 유효하지 않습니다. 준비했습니다.

-400, 토토 꽁 머니 오류: %s 라인 %d.

일부포스트그레오류. 메시지에는 다음의 오류 메시지가 포함되어 있습니다.포스트그레백엔드.

-401, 트랜잭션 처리 라인 %d에 오류가 있습니다.

포스트그레다음에 신호를 보냈습니다. 시작, 커밋 또는 롤백할 수 없습니다. 거래.

-402, 연결: %s 데이터베이스를 열 수 없습니다.

데이터베이스 연결이 작동하지 않았습니다.

100, %d행 데이터를 찾을 수 없습니다.

이것은 "정상적인" 오류로, 귀하가 무엇을 하고 있는지 알려줍니다. 쿼리를 찾을 수 없거나 다음 단계를 거쳤습니다. 커서.