지원되지 않는 버전 :7.0
이 문서는 지원되지 않는 버전의 PostgreSQL 용입니다.
당신은에 대해 같은 페이지를 볼 수 있습니다현재버전 또는 위에 나열된 다른 지원 버전 중 하나입니다.

롤 토토 방법ECPG

이 섹션은 롤 토토 방법에 대해 설명합니다.ECPG도구.

사전 처리기

사전 처리기가라고합니다.ECPG. 설치 후에 있습니다.Postgres bin/디렉토리.

도서관

theECPG라이브러리는입니다.libecpg.a또는libecpg.so. 또한 라이브러리는를 롤 토토합니다.libpq커뮤니케이션을위한 도서관Postgres서버를 통해 프로그램을 연결하려면-LECPG -LPQ.

라이브러리에는 "숨겨진"롤 토토이 있지만 언젠가는 매우 유용하다는 것을 증명합니다.

  • ecpgdebug (inton, 파일 *스트림)디버그 로깅을 켭니다 첫 번째 인수가 0이 아닌 것으로 호출되었습니다. 디버그 로깅이 완료되었습니다 에스트림. 최대SQL명령문은 인수를 기록합니다 결과.

    가장 중요한 것 (ecpgdo) 그것은 거의 모든 것에 불립니다SQLStatements는 확장 된 문자열, 즉 문자열을 모두 기록합니다. 모든 입력 변수가 삽입되고 결과는Postgres서버. 이것은 될 수 있습니다 당신의 롤 토토를 검색 할 때 매우 유용합니다SQL진술.

  • ecpgstatus ()이 메소드가 반환됩니다 우리가 데이터베이스에 연결되어 있고 그렇지 않은 경우 false..

롤 토토 손질

에서 롤 토토를 감지 할 수 있으려면Postgres서버와 같은 줄 포함

exec sql 포함 sqlca;
파일의 포함 섹션에서. 이것은 a를 정의합니다 구조 및 이름이있는 변수SQLCA다음과 같이 :
struct sqlca

 char sqlcaid [8];
 긴 sqlabc;
 긴 sqlcode;
 구조

  int sqlerrml;
  char sqlerrmc [70];
  sqlerrm;
 char sqlerrp [8];
 긴 sqlerrd [6];
 / * 0 : 빈 */
 / * 1 : 해당되는 경우 가공 된 튜플의 OID */
 / * 2 : 인서트에서 처리 된 행 수, 업데이트 */
 / * 또는 명령문 삭제 */
 / * 3 : 빈 */
 / * 4 : 빈 */
 / * 5 : 빈 */
 char sqlwarn [8];
 / * 0 : 'W' */인 경우 'w'로 설정
 / * 1 : 'w'가 적어도 하나의 문자 문자열 */
 / * 값은 */일 때 잘 렸습니다.
 /* 호스트 변수에 저장되었습니다.                  */
 / * 2 : 빈 */
 / * 3 : 빈 */
 / * 4 : 빈 */
 / * 5 : 빈 */
 / * 6 : 빈 */
 / * 7 : 빈 */
 char sqlext [8];
 sqlca;

마지막에서 롤 토토가 발생한 경우SQL성명서sqlca.sqlcode0이 아닌. 만약에sqlca.sqlcode는 적습니다 그 다음 0은 데이터베이스와 같은 일종의 심각한 오류입니다. 정의는 주어진 쿼리와 일치하지 않습니다. 0보다 큰 경우 그런 다음 테이블에 포함되지 않은 것처럼 이것은 정상 오류입니다. 요청 된 행.

SQLCA.SQLERRM.SQLERRMC는 다음을 설명하는 문자열을 포함합니다 오류. 문자열은 소스 파일의 줄 번호로 끝납니다.

발생할 수있는 롤 토토 목록 :

-12, 메모리가 줄을 끄는 메모리 d.

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

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

일반적으로 발생하지 않습니다. 이것은 사전 처리기는 라이브러리가하지 않는 것을 생성했습니다 알고 있습니다. 아마도 당신은 호환되지 않는 버전을 실행하고있을 것입니다 전처리 자와 도서관.

-201, 너무 많은 인수 라인 d.

이것은를 의미합니다.Postgres우리가 일치하는 변수가있는 것보다 더 많은 인수를 반환했습니다. 아마도 당신은 몇 개의 호스트 변수를 잊어 버렸을 것입니다. 그만큼내 : var1, : var2-list.

-202, 너무 적은 인수 라인 d.

이것은를 의미합니다.Postgres호스트 변수가있는 것보다 더 적은 인수를 반환했습니다. 아마도 당신은에 호스트 변수가 너무 많을 것입니다.in : var1, : var2-list.

-203, 너무 많은 일치 라인 d.

이것은 쿼리가 여러 줄을 반환했음을 의미하지만 지정된 변수는 배열이 없습니다. 그만큼select당신은 아마 독특하지 않았을 것입니다.

-204, 올바르게 형식화되지 않은 int 유형 : %s line %d.

이것은 호스트 변수가 an임을 의미합니다.int타입 및 필드Postgres데이터베이스는 다른 유형이며 로 해석 할 수없는 값을 포함합니다int. 라이브러리 롤 토토strtol이 변환의 경우

-205, 서명되지 않은 유형을 올바르게 형식화하지 않음 : %s line %d.

이것은 호스트 변수가 an임을 의미합니다.부호없는 int타입 및 필드Postgres데이터베이스입니다 다른 유형 및 해석 할 수없는 값을 포함합니다.부호없는 int. 라이브러리 롤 토토strtoul이 변환의 경우

-206, 플로팅 포인트 유형을 올바르게 형식화하지 않음 : %s 라인 %디.

이것은 호스트 변수가 a임을 의미합니다.float타입 및 필드Postgres데이터베이스는 다른 유형이며 로 해석 할 수없는 값을 포함합니다float. 라이브러리 롤 토토strtod이 변환의 경우

-207, 라인에서 %s를 bool로 변환 할 수 없음 d.

이것은 호스트 변수가 a임을 의미합니다.bool타입 및 필드Postgres데이터베이스는 'T'도 아닙니다 '에프'.

-208, 빈 쿼리 라인 %d.

Postgres반환 pgres_empty_query, 아마도 쿼리가 실제로 있었기 때문일 것입니다 비어 있는.

-220, 그러한 연결이 없음 Sental %d.

프로그램은 그렇지 않은 연결에 액세스하려고합니다. 존재하다.

-221, 줄에 연결되지 않음 d.

프로그램은 존재하는 연결에 액세스하려고하지만 열려 있지 않습니다.

-230, 유효하지 않은 명령문 이름 %s line %d.

당신이 롤 토토하려는 진술은 준비.

13095_13130

일부Postgres롤 토토. 그만큼 메시지는의 롤 토토 메시지가 포함됩니다.Postgres백엔드.

-401, 트랜잭션 처리 라인의 롤 토토 %d.

Postgres우리에게 신호를 받았습니다 우리는 거래를 시작, 커밋 또는 롤백 할 수 없다는 것입니다.

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

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

100, 데이터를 찾을 수 없음 line %d.

이것은 당신이 무엇인지 알려주는 "정상적인"롤 토토입니다. 질문을 찾을 수 없거나 커서를 통과했습니다.