이 섹션은 롤 토토 방법에 대해 설명합니다.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는 다음을 설명하는 문자열을 포함합니다 오류. 문자열은 소스 파일의 줄 번호로 끝납니다.
발생할 수있는 롤 토토 목록 :
일반적으로 발생하지 않습니다. 이것은 당신의 가상이라는 신호입니다 메모리가 소진되었습니다.
일반적으로 발생하지 않습니다. 이것은 사전 처리기는 라이브러리가하지 않는 것을 생성했습니다 알고 있습니다. 아마도 당신은 호환되지 않는 버전을 실행하고있을 것입니다 전처리 자와 도서관.
이것은를 의미합니다.Postgres우리가 일치하는 변수가있는 것보다 더 많은 인수를 반환했습니다. 아마도 당신은 몇 개의 호스트 변수를 잊어 버렸을 것입니다. 그만큼내 : var1, : var2-list.
이것은를 의미합니다.Postgres호스트 변수가있는 것보다 더 적은 인수를 반환했습니다. 아마도 당신은에 호스트 변수가 너무 많을 것입니다.in : var1, : var2-list.
이것은 쿼리가 여러 줄을 반환했음을 의미하지만 지정된 변수는 배열이 없습니다. 그만큼select당신은 아마 독특하지 않았을 것입니다.
이것은 호스트 변수가 an임을 의미합니다.int타입 및 필드Postgres데이터베이스는 다른 유형이며 로 해석 할 수없는 값을 포함합니다int. 라이브러리 롤 토토strtol이 변환의 경우
이것은 호스트 변수가 an임을 의미합니다.부호없는 int타입 및 필드Postgres데이터베이스입니다 다른 유형 및 해석 할 수없는 값을 포함합니다.부호없는 int. 라이브러리 롤 토토strtoul이 변환의 경우
이것은 호스트 변수가 a임을 의미합니다.float타입 및 필드Postgres데이터베이스는 다른 유형이며 로 해석 할 수없는 값을 포함합니다float. 라이브러리 롤 토토strtod이 변환의 경우
이것은 호스트 변수가 a임을 의미합니다.bool타입 및 필드Postgres데이터베이스는 'T'도 아닙니다 '에프'.
Postgres반환 pgres_empty_query, 아마도 쿼리가 실제로 있었기 때문일 것입니다 비어 있는.
프로그램은 그렇지 않은 연결에 액세스하려고합니다. 존재하다.
프로그램은 존재하는 연결에 액세스하려고하지만 열려 있지 않습니다.
당신이 롤 토토하려는 진술은 준비.
일부Postgres롤 토토. 그만큼 메시지는의 롤 토토 메시지가 포함됩니다.Postgres백엔드.
Postgres우리에게 신호를 받았습니다 우리는 거래를 시작, 커밋 또는 롤백 할 수 없다는 것입니다.
데이터베이스에 대한 연결이 작동하지 않았습니다.
이것은 당신이 무엇인지 알려주는 "정상적인"롤 토토입니다. 질문을 찾을 수 없거나 커서를 통과했습니다.