Postg토토 커뮤니티QL 9.1.24 문서 | ||||
---|---|---|---|---|
PostgreSQL : 문서 : 9.1 : 토토 결과 상태 기능 | up | 31 장libpq-C 라이브러리 | PostgreSQL : 문서 : 9.1 : 비동기 토토 핫 처리 |
데이터베이스 서버에 대한 연결이 성공적으로 성공하면 여기에 설명 된 기능은 SQL을 수행하는 데 사용됩니다. 쿼리 및 토토 커뮤니티.
PQEXEC
서버에 토토 커뮤니티을 제출하고 결과.
pg토토 커뮤니티ult *pqexec (pgconn *conn, const char *command);
반환 apg토토 커뮤니티ult포인터
또는 아마도 널 포인터 일 수 있습니다. 널이 아닌 포인터가 있습니다
일반적으로 메모리 외 조건을 제외하고 반환됩니다
또는 토토 커뮤니티을 보낼 수없는 것과 같은 심각한 오류
서버에. 그만큼pq토토 커뮤니티ultstatus
함수가되어야합니다
오류에 대한 반환 값을 확인하기 위해 호출되었습니다
(널 포인터의 값 포함, 즉
돌아올pg토토 커뮤니티_fatal_error).
사용PQERRORMESSAGE
얻을 수 있습니다
이러한 오류에 대한 자세한 정보.
토토 커뮤니티 문자열에는 여러 SQL 토토 커뮤니티이 포함될 수 있습니다
(세미콜론으로 분리). 단일로 전송 된 여러 쿼리PQEXEC
호출은 a
명시 적이없는 한 단일 거래시작/커밋토토 커뮤니티
쿼리 문자열에 포함되어 다중으로 나뉩니다.
업무. 그러나 반환 된 점에 유의하십시오pg토토 커뮤니티ult구조는 결과 만 설명합니다
문자열에서 실행 된 마지막 토토 커뮤니티의 하나 야
토토 커뮤니티이 실패하고 문자열 처리가 중지됩니다.
반품pg토토 커뮤니티ult오류 조건.
pqexecparams
서버에 토토 커뮤니티을 제출하고 결과적으로 매개 변수를 별도로 전달할 수 있습니다 SQL 토토 커뮤니티 텍스트에서.
pg토토 커뮤니티ult *pqexecparams (pgconn *conn, const char *토토 커뮤니티, int nparams, const oid *paramtypes, const char * const * paramvalues, const int *paramlengths, const int *faramformats, int 토토 커뮤니티ultformat);
pqexecparams
PQEXEC
그러나 제공합니다
추가 기능 : 매개 변수 값이 될 수 있습니다
토토 커뮤니티 문자열에서 별도로 지정됩니다
쿼리 결과는 텍스트 또는 이진으로 요청할 수 있습니다.
체재.pqexecparams
is
프로토콜 3.0 이상 연결에서만 지원됩니다. 그것
프로토콜 2.0을 사용할 때 실패합니다.
함수 인수는 다음과 같습니다.
토토 커뮤니티을 보낼 연결 객체 을 통해.
실행될 SQL 토토 커뮤니티 문자열. 만약에 매개 변수가 사용되며, 참조됩니다 토토 커뮤니티 문자열 as$ 1, $ 2등
제공된 매개 변수 수; 그것은입니다 배열의 길이Paramtypes [], paramvalues [], Paramlengths []및FARAMFORMATS []. (배열 포인터는NULL언제NPARAMSIS ZERO.)
지정할 데이터 유형을 OID로 지정합니다 매개 변수 기호로. 만약에ParamtypesisNULL또는 특정 요소 배열은 0이고 서버는 데이터 유형을 유추합니다. 같은 방식으로 매개 변수 기호의 경우 유형의 문자 그대로의 문자열을 위해하십시오.
매개 변수의 실제 값을 지정합니다. 에이 이 배열의 널 포인터는 해당 것을 의미합니다 매개 변수는 null입니다. 그렇지 않으면 포인터가 가리 킵니다 텍스트 형식의 제로 종료 텍스트 문자열 (텍스트 형식) 또는 서버가 예상 한 형식의 이진 데이터 (이진 형식).
실제 데이터 길이를 지정합니다 이진 형식 매개 변수. NULL에 대해 무시됩니다 매개 변수 및 텍스트 형식 매개 변수. 배열 이진이 없을 때 포인터는 무일하게 될 수 있습니다 매개 변수.
매개 변수가 텍스트인지 지정합니다 (put a 해당 배열 항목의 0 매개 변수) 또는 바이너리 (배열 항목에 하나를 넣습니다. 해당 매개 변수의 경우). 배열 인 경우 포인터는 null이면 모든 매개 변수가 추정됩니다 텍스트 문자열이 되십시오.
이진 형식으로 전달되는 값에는 지식이 필요합니다 내부 표현의 백엔드. 예를 들어 정수를 통과해야합니다 네트워크 바이트 순서. 통과숫자값은 지식이 필요합니다 에서 구현 된 서버 스토리지 형식src/backend/utils/adt/numeric.c :: numeric_send ()andsrc/backend/utils/adt/numeric.c :: numeric_recv ().
텍스트 형식으로 결과를 얻으려면 0을 지정하고, 또는 이진 형식의 결과를 얻기위한 하나. (거기 현재 다르게 얻을 수있는 조항이 아닙니다 비록 다른 형식의 결과 열이지만 기본 프로토콜에서 가능합니다.)
의 주요 장점pqexecparams
OverPQEXEC
그 매개 변수 값이 될 수 있습니다
토토 커뮤니티 문자열에서 분리되어 필요를 피합니다.
지루하고 오류가 발생하기 쉬운 인용 및 탈출.
와 달리PQEXEC
, pqexecparams
최대 하나의 SQL 토토 커뮤니티을 허용합니다
주어진 문자열에서. (반 콜론이있을 수 있지만 그렇지 않습니다
하나 이상의 비어 있지 않은 토토 커뮤니티.) 이것은
기본 프로토콜이지만 추가로 유용성이 있습니다
SQL 주입 공격에 대한 방어.
팁 :OIDS를 통한 매개 변수 유형 지정입니다 특히 하드 와이어를 선호하지 않는다면 지루합니다 프로그램에 특정 OID 값. 그러나 할 수 있습니다 서버 자체가있는 경우에도 그렇게하지 마십시오. 매개 변수의 유형을 결정할 수 없거나 원하는 것과 다른 유형. SQL 토토 커뮤니티 텍스트에서 명시적인 캐스트를 매개 변수 기호에 첨부하여 표시하십시오. 보낼 데이터 유형. 예를 들어:
선택 *에서 mytable에서 x = $ 1 :: bigint;이 힘 매개 변수$ 1로 취급bigint19793_19862x. 매개 변수 유형 결정 강제, 이런 식으로 또는 숫자 유형 OID를 지정하여 매개 변수 값을 보낼 때 강력하게 권장됩니다 이진 형식은 이진 형식의 중복성이 적기 때문에 이진 형식 텍스트 형식보다 서버는 유형 불일치 실수를 감지합니다.
pqprepare
준비 된 문을 작성하라는 요청을 제출합니다 주어진 매개 변수 및 완료를 기다립니다.
pg토토 커뮤니티ult *pqprepare (pgconn *conn, const char *stmtname, const char *쿼리, int nparams, const oid *paramtypes);
pqprepare
생성 a
나중에 실행을위한 준비된 진술pqExecprepared
. 이 기능은 허용합니다
반복적으로 사용되는 토토 커뮤니티은 구문 분석하고
마다마다 한 번만 계획되었습니다
실행.pqprepare
IS
프로토콜 3.0 이상 연결에서만 지원됩니다. 그것
프로토콜 2.0을 사용할 때 실패합니다.
이 함수는 준비된 문을 만듭니다.stmtname에서쿼리String
단일 SQL 토토 커뮤니티.stmtnamecan be""이름이없는 것을 만들려면
이 경우 기존의 이름이없는 토토 커뮤니티문
명세서가 자동으로 교체됩니다. 그렇지 않으면 그것은입니다
오류 토토 커뮤니티문 이름이 이미 정의 된 경우
현재 세션. 매개 변수를 사용하는 경우입니다
쿼리에서에 참조$ 1,
$ 2등nparams는 매개 변수 수입니다
배열에서 미리 지정되는 유형Paramtypes []. (배열 포인터가 될 수 있습니다NULL언제NPARAMSis Zero.)Paramtypes []OID에 의해 데이터를 지정합니다
매개 변수 기호에 할당 할 유형. 만약에ParamtypesisNULL또는 특정 요소
배열은 0이고 서버는 데이터 유형을
매개 변수 기호와 같은 방식으로
무형 문자 문자열. 또한 쿼리는 매개 변수를 사용할 수 있습니다
숫자가 높은 기호NPARAMS; 데이터 유형이 추론됩니다
이 기호들도. (보다PQDESCREPREPARED
찾을 수있는 수단
어떤 데이터 유형이 추론되었는지.)
withPQEXEC
,
결과는 일반적으로 A입니다.pg토토 커뮤니티ult내용이 서버 측 성공을 나타내는 객체 또는
실패. 널 결과는 메모리 외부를 나타냅니다
토토 커뮤니티을 전혀 보낼 수 없습니다. 사용PQERRORMESSAGE
더 많은 정보를 얻으려면
그러한 오류에 대해.
사용하기위한 준비된 진술pqExecprepared
SQL 실행PostgreSQL : 문서 : 9.1 : 범퍼카 토토진술. 또한 없지만libpq준비된 삭제를위한 함수
진술, SQL롤 토토 : 문서 : 9.1 : 딜 로이징그 목적으로 문을 사용할 수 있습니다.
pqExecprepared
준비한 토토 커뮤니티문을 실행하라는 요청을 보냅니다 매개 변수가 주어지고 결과를 기다립니다.
pg토토 커뮤니티ult *pqexecprepared (pgconn *conn, const char *stmtname, int nparams, const char * const * paramvalues, const int *paramlengths, const int *faramformats, int 토토 커뮤니티ultformat);
pqExecprepared
pqexecparams
그러나
실행되는 토토 커뮤니티은 이름을 지정하여 지정됩니다
쿼리를 제공하는 대신 이전에 준비된 진술
끈. 이 기능을 사용하면 사용될 토토 커뮤니티이 가능합니다
반복적으로 한 번만 구문 분석되고 계획되어야합니다
그들이 처형 될 때보다. 성명서에는 있어야합니다
현재 세션에서 이전에 준비되었습니다.pqExecprepared
지원됩니다
프로토콜 3.0 이상 연결에서만; 실패합니다
프로토콜 2.0을 사용할 때.
매개 변수는 동일합니다PQEXECPARAMS
준비된 토토 커뮤니티문은 쿼리 문자열 대신에 제공됩니다.
그리고Paramtypes []매개 변수
존재하지 않습니다 (준비된 이후에는 필요하지 않습니다.
토토 커뮤니티문의 매개 변수 유형은시기에 결정되었습니다
생성).
PQDESCREPREPARED
에 대한 정보를 얻기위한 요청을 제출합니다 지정된 준비된 진술 및 기다립니다 완성.
pg토토 커뮤니티ult *pqdescribeprepared (pgconn *conn, const char *stmtname);
PQDESCREPREPARED
응용 프로그램에서 a에 대한 정보를 얻을 수 있습니다
이전에 준비된 진술.pqdescribeprepared
만 지원됩니다
프로토콜 3.0 이상 연결; 때는 실패합니다
프로토콜 사용 2.0.
stmtnamecan be""또는nullTO
이름이없는 진술을 참조하십시오. 그렇지 않으면 그것은입니다
기존 준비 된 진술의 이름. 성공에, Apg토토 커뮤니티ult상태pgres_command_ok반환됩니다.
기능PQNPARAMS
andPQPARAMTYPE
를 적용 할 수 있습니다
이것에pg토토 커뮤니티ult얻기 위해
준비된 매개 변수에 대한 정보
진술 및 기능pqnfields
, pqfname
, pqftype
등에 대한 정보를 제공합니다
진술의 결과 열 (있는 경우).
pqdescribePortal
에 대한 정보를 얻기위한 요청을 제출합니다 지정된 포털 및 완료를 기다립니다.
pg토토 커뮤니티ult *pqdescribePortal (pgconn *conn, const char *portalname);
pqdescribePortal
허용
이전에 대한 정보를 얻기위한 응용 프로그램
포털이 생성되었습니다. (libpq포털에 직접 액세스 할 수는 없지만
이 기능을 사용하여
커서로 생성 된 커서선언
커서SQL 토토 커뮤니티.)pqdescribePortal
만 지원됩니다
프로토콜 3.0 이상 연결; 때는 실패합니다
프로토콜 사용 2.0.
PortalNamecan be""또는NULL이름없는 포털을 참조하려면
그렇지 않으면 기존 포털의 이름이어야합니다. ~에
성공, Apg토토 커뮤니티ult상태pgres_command_okis
반환. 기능pqnfields
, pqfname
, pqftype
등을에 적용 할 수 있습니다pg토토 커뮤니티ult얻기 위해
결과 열 (있는 경우)에 대한 정보
문.
thepg토토 커뮤니티ult구조 서버에서 반환 한 결과를 캡슐화합니다.libpq응용 프로그램 프로그래머가 있어야합니다 유지 관리 조심pg토토 커뮤니티ult추상화. 아래의 액세서 기능을 사용하여 의 내용pg토토 커뮤니티ult. 피하다 의 필드를 직접 참조pg토토 커뮤니티ult그 주제이기 때문에 구조 미래의 변화.
pq토토 커뮤니티ultstatus
토토 커뮤니티의 결과 상태를 반환합니다.
execstatustype pq토토 커뮤니티ultstatus (const pg토토 커뮤니티ult *res);
pq토토 커뮤니티ultstatus
can
다음 값 중 하나를 반환합니다.
서버로 전송 된 문자열이 비어있었습니다.
반환하는 토토 커뮤니티의 성공적인 완료 번호 데이터.
토토 커뮤니티 반환의 성공적인 완료 데이터 (예 :select또는show).
(서버에서) 데이터 전송을 복사합니다 시작.
(서버로) 데이터 전송이 시작되었습니다.
서버의 응답은 이해되지 않았습니다.
치명적이지 않은 오류 (통지 또는 경고) 발생했습니다.
치명적인 오류가 발생했습니다.
복사/출력 (서버 및에서) 데이터 전송 시작. 이것은 현재 스트리밍에만 사용됩니다 복제.
결과 상태가있는 경우pgres_tuples_ok그런 다음 함수 아래 설명 된 행을 검색하는 데 사용될 수 있습니다. 쿼리에 의해. Aselect제로 행을 검색하여 발생하는 토토 커뮤니티은 여전히 표시됩니다pgres_tuples_ok. pgres_command_ok는 할 수있는 토토 커뮤니티입니다 절대 줄을 반환하지 마십시오 (삽입, 업데이트등). 의 응답pg토토 커뮤니티_empty_query클라이언트 소프트웨어의 버그.
상태의 결과pg토토 커뮤니티_nonfatal_error절대 반환되지 않습니다
직접PQEXEC
또는 기타
쿼리 실행 기능; 이런 종류의 결과
대신 통지 프로세서로 전달되었습니다 (참조섹션 31.11).
pq토토 커뮤니티status
reture 열거 된 유형을 변환합니다pq토토 커뮤니티ultstatus
문자열 상수로
상태 코드를 설명합니다. 발신자는 자유롭지 않아야합니다
결과.
char *pq토토 커뮤니티status (execstatustype status);
PQ토토 커뮤니티ULTERRORMESSAGE
토토 커뮤니티과 관련된 오류 메시지를 반환합니다. 또는 오류가없는 경우 빈 문자열.
char *pqresulterrormessage (const pg토토 커뮤니티ult *res);
오류가 있으면 반환 된 문자열이 있습니다
후행 Newline을 포함하십시오. 발신자는 자유롭지 않아야합니다
결과 직접. 관련이 해방 될 것입니다pg토토 커뮤니티ult핸들이 전달됩니다PQCLEAR
.
바로 다음PQEXEC
또는pqget토토 커뮤니티ult
Call,PQERRORMESSAGE
(연결 중)
와 같은 문자열을 반환합니다.PQ토토 커뮤니티ULTERRORMESSAGE
(결과에서).
그러나 Apg토토 커뮤니티ult의지
파괴 될 때까지 오류 메시지를 유지하는 동안
연결 오류 메시지는 후속시 변경됩니다
작업이 완료되었습니다. 사용PQ토토 커뮤니티ULTERRORMESSAGE
원할 때
특정 상태를 알고 있습니다pg토토 커뮤니티ult; 사용PQERRORMESSAGE
알고 싶을 때
최신 작업의 상태
연결.
pq토토 커뮤니티ulterrorfield
오류 보고서의 개별 필드를 반환합니다.
char *pqresultterrorfield (const pg토토 커뮤니티ult *res, int fieldcode);
FieldCode는 오류 필드입니다
식별자; 아래에 나열된 기호를 참조하십시오.NULL이면 반환됩니다pg토토 커뮤니티ult오류 나 경고가 아닙니다
결과 또는 지정된 필드를 포함하지 않습니다. 필드
값은 일반적으로 후행 신성을 포함하지 않습니다. 그만큼
발신자는 결과를 직접 자유롭게 해제해서는 안됩니다. 그것은 될 것입니다
연관일 때 해방pg토토 커뮤니티ult핸들이 전달되었습니다PQCLEAR
.
다음 필드 코드를 사용할 수 있습니다.
심각도; 필드 내용은오류, 치명적또는panic(오류 메시지에서) 또는경고, 통지, 디버그, 정보또는log(통지 메시지) 또는 a 이들 중 하나의 현지화 된 번역. 언제나 현재의.
오류에 대한 sqlstate 코드. sqlstate 코드는 오류의 유형을 식별합니다 발생; 프론트 엔드 애플리케이션에서 사용할 수 있습니다 특정 작업 (예 : 오류)을 수행합니다 처리) 특정 데이터베이스에 대한 응답 오류. 가능한 sqlstate 코드 목록은 보다와이즈 토토 : 문서 : 9.1 : 와이즈. 이 분야는 현지화 할 수 없으며 항상입니다 현재의.
기본 사람이 읽을 수있는 오류 메시지 (일반적으로 한 줄). 항상 존재합니다.
세부 사항 : 선택적 보조 오류 메시지 문제에 대한 자세한 내용. 실행될 수 있습니다 여러 줄로.
힌트 : 선택적인 제안에 대해 무엇을 해야하는지 문제. 이것은 세부 사항과 다르기위한 것입니다 그것은 조언을 제공한다는 점에서 (잠재적으로 어려운 사실보다는 부적절합니다. 실행될 수 있습니다 여러 줄.
소수 정수를 포함하는 문자열 오류 커서 위치는 원본 문자열. 첫 번째 캐릭터는 있습니다 색인 1 및 위치는 문자로 측정됩니다 바이트가 아닙니다.
이것은와 동일하게 정의됩니다.pg_diag_statement_position필드 커서 위치가 내부적으로 생성 된 토토 커뮤니티이 아니라 토토 커뮤니티 고객이 제출했습니다. 그만큼pg_diag_internal_query필드 이 필드가 나타날 때 항상 나타납니다.
내부적으로 생성 된 텍스트의 텍스트 토토 커뮤니티. 예를 들어 SQL 쿼리 일 수 있습니다 PL/PGSQL 기능에 의해 발행.
오류가있는 컨텍스트의 표시 발생했습니다. 현재 여기에는 콜 스택이 포함됩니다 활발한 절차 언어 기능의 추적 내부적으로 생성 된 쿼리. 흔적은 하나입니다 줄 당 진입, 가장 최근 첫 번째.
소스 코드 위치의 파일 이름 오류가보고되었습니다.
소스 코드 위치의 줄 번호 오류가보고 된 곳.
소스 코드 함수보고의 이름 오류.
클라이언트는 표시된 서식을 담당합니다 필요를 충족시키기위한 정보; 특히 그것은해야합니다 필요에 따라 긴 줄을 끊으십시오. Newline 캐릭터가 나타납니다 오류에서 메시지 필드는 다음과 같이 처리해야합니다 단락 브레이크, 줄이 나지 않습니다.
내부적으로 생성 된 오류libpq심각도와 1 차 메시지이지만 일반적으로 다른 필드는 없습니다. 오류가 반환되었습니다 Pre-3.0 Protocol 서버에는 심각도가 포함됩니다 기본 메시지, 때로는 세부 메시지이지만 아니요 다른 분야.
오류 필드는에서만 사용할 수 있습니다.pg토토 커뮤니티ult객체, 아님pgconn개체; 없음PQERRORFIELD
기능.
PQCLEAR
a를 해제합니다pg토토 커뮤니티ult. 모든 토토 커뮤니티 결과가 있어야합니다
를 통해 해방PQCLEAR
언제
더 이상 필요하지 않습니다.
void pqclear (pg토토 커뮤니티ult *res);
당신은 a를 유지할 수 있습니다.pg토토 커뮤니티ult필요한만큼 오랫동안 물체; 가지 않습니다
새로운 토토 커뮤니티을 발행 할 때 또는 닫는 경우에도
연결. 제거하려면 전화해야PQCLEAR
. 이 작업을 수행하지 못합니다
응용 프로그램에서 메모리 누출이 발생합니다.
이 기능은 a에서 정보를 추출하는 데 사용됩니다.pg토토 커뮤니티ult성공적인 쿼리 결과 (즉, 상태가있는 것pgres_tuples_ok). 그들은 또한 될 수 있습니다 성공적인 설명에서 정보를 추출하는 데 사용됩니다 작동 : 설명의 결과는 모두 동일한 열입니다 쿼리의 실제 실행이 제공하는 정보, 그러나 행은 0입니다. 다른 상태 값이있는 개체의 경우 이러한 기능은 결과에 행이 0 인 것처럼 작동합니다. 0 열.
pqntuples
쿼리의 행 수 (튜플)를 반환합니다 결과. 정수 결과를 반환하기 때문에 크기가 크기 때문입니다 결과 세트는 32 비트에서 리턴 값을 넘칠 수 있습니다 운영 체제.
int pqntuples (const pg토토 커뮤니티ult *res);
pqnfields
각 행에서 열 (필드) 수를 반환합니다. 쿼리 결과.
int pqnfields (const pg토토 커뮤니티ult *res);
pqfname
주어진과 관련된 열 이름을 반환합니다
열 번호. 열 숫자는 0에서 시작합니다. 발신자
결과를 직접 자유롭게 해제해서는 안됩니다. 그것은 해방 될 것입니다
관련된 경우pg토토 커뮤니티ult핸들이 전달되었습니다PQCLEAR
.
char *pqfname (const pg토토 커뮤니티ult *res, int column_number);
NULL열이면 반환됩니다 숫자는 범위를 벗어났습니다.
pqfnumber
주어진과 관련된 열 번호를 반환합니다 열 이름.
int pqfnumber (const pg토토 커뮤니티ult *res, const char *column_name);
47451_47522
주어진 이름은 SQL에서 식별자처럼 취급됩니다. 토토 커뮤니티은 두 번 인용되지 않는 한 다운 케이스입니다. 예를 들어 SQL에서 생성 된 쿼리 결과가 주어지면 토토 커뮤니티:
1을 foo로 선택하고, 2로 "bar";
결과가 있습니다 :
pqfname (res, 0)foopqfname (res, 1)barpqfnumber (res, "foo")0pqfnumber (res, "foo")0pqfnumber (res, "bar")-1pqfnumber (res, "\"bar \ "")1
pqftable
주어진 테이블의 OID를 반환합니다. 칼럼이 가져 왔습니다. 열 번호는 0에서 시작합니다.
OID pqftable (const pg토토 커뮤니티ult *res, int column_number);
Invalidoid열 번호는 범위를 벗어나거나 지정된 열이있는 경우 테이블 열에 대한 간단한 참조가 아닙니다. Pre-3.0 프로토콜 사용. 시스템 테이블을 쿼리 할 수 있습니다PG_CLASS정확히 결정합니다 어떤 테이블이 참조됩니다.
유형OID및 상수Invalidoid당신은 포함libpq헤더 파일. 둘 다 정수 유형이 될 것입니다.
pqftablecol
열의 열 번호 (테이블 내)를 반환합니다 열이 지정된 쿼리 결과 열을 구성합니다. Query-Result 열 번호는 0에서 시작하지만 테이블 열은 0에서 시작됩니다 0이 아닌 숫자가 있습니다.
int pqftablecol (const pg토토 커뮤니티ult *res, int column_number);
열 번호가 범위를 벗어난 경우 0이 반환됩니다. 또는 지정된 열이 간단한 참조가 아닌 경우 테이블 열, 또는 Pre-3.0 프로토콜을 사용할 때.
pqfformat
형식을 나타내는 형식 코드를 반환합니다 주어진 열. 열 번호는 0에서 시작합니다.
int pqfformat (const pg토토 커뮤니티ult *res, int column_number);
형식 코드 0은 텍스트 데이터를 나타냅니다 표현, 형식 코드 1은 이진을 나타냅니다 대표. (다른 코드는 향후 예약되어 있습니다 정의.)
pqftype
주어진 열과 관련된 데이터 유형을 반환합니다 숫자. 반환 된 정수는 내부 OID 번호입니다 유형의. 열 번호는 0에서 시작합니다.
OID pqftype (const pg토토 커뮤니티ult *res, int column_number);
시스템 테이블을 쿼리 할 수 있습니다pg_type이름과 속성을 얻습니다 다양한 데이터 유형 중. 그만큼OID51255_51320src/include/catalog/pg_type.h소스 트리.
pqfmod
연관된 열의 유형 수정자를 반환합니다 주어진 열 번호로. 열 번호는 시작됩니다 0.
int pqfmod (const pg토토 커뮤니티ult *res, int column_number);
수정 자 값의 해석은 다음과 같습니다 유형-특이 적; 그들은 일반적으로 정밀 또는 크기를 나타냅니다 제한. 값 -1은 표시하는 데 사용됩니다"정보 없음". 대부분의 데이터 유형은 수정자를 사용하지 않으며 값은 다음과 같습니다. 항상 -1.
pqfsize
관련 열의 바이트로 크기를 반환합니다 주어진 열 번호로. 열 번호는 시작됩니다 0.
int pqfsize (const pg토토 커뮤니티ult *res, int column_number);
pqfsize
반환합니다
데이터베이스 행 에서이 열에 할당 된 공간은
즉, 서버 내부의 크기입니다
데이터 유형의 표현. (따라서, 그렇지 않습니다
고객에게 정말 유용합니다.) 부정적인 가치
데이터 유형이 가변 길이임을 나타냅니다.
pqbinaryTuples
reboods 1 인 경우 1pg토토 커뮤니티ult텍스트 데이터가 포함 된 경우 이진 데이터와 0이 포함되어 있습니다.
int pqbinaryTuples (const pg토토 커뮤니티ult *res);
이 함수는 더 이상 사용되지 않습니다 (사용을 제외하고
와의 연결COPY)
단일 가능합니다.pg토토 커뮤니티ult일부에는 텍스트 데이터를 포함합니다
기타의 열 및 이진 데이터.pqfformat
선호됩니다.pqbinaryTuples
1만큼만 반환합니다
결과의 열은 이진 (형식 1)입니다.
pqgetValue
a의 단일 필드 값을 반환합니다pg토토 커뮤니티ult. 행과 열
숫자는 0에서 시작합니다. 발신자는 결과를 자유롭게하지 않아야합니다.
곧장. 관련이 해방 될 것입니다pg토토 커뮤니티ult핸들이 전달됩니다PQCLEAR
.
char *pqgetValue (const pg토토 커뮤니티ult *res, int row_number, int column_number);
텍스트 형식의 데이터의 경우pqgetValue
is
Null-Terminated 캐릭터 문자열 표현
필드 값. 이진 형식의 데이터의 경우 값이
데이터 유형에 의해 결정된 이진 표현TypSend
및typreceive
함수. (가치는입니다
실제로이 경우에도 제로 바이트가 이어지지만
값이 가능할 가능성이 높기 때문에 일반적으로 유용하지 않습니다.
내장 널 포함.)
필드 값이 있으면 빈 문자열이 반환됩니다.
널. 보다PQGETISNULL
to
널 값을 빈 스트링 값과 구별합니다.
포인터가 반환pqgetValue
스토리지를 가리 킵니다
의 일부pg토토 커뮤니티ult구조. 가리키는 데이터를 수정해서는 안되며
데이터를 다른 스토리지에 명시 적으로 복사해야합니다.
그것이 수명을 지나서 사용되는 경우pg토토 커뮤니티ult구조 자체.
PQGETISNULL
널 값에 대한 필드를 테스트합니다. 행 및 열 번호 0에서 시작합니다.
int pqgetisnull (const pg토토 커뮤니티ult *res, int row_number, int column_number);
이 함수는 필드가 널이고 0 인 경우 1을 반환합니다.
널이 아닌 값이 포함되어 있습니다. (pqgetValue
빈 문자열을 반환합니다.
널 필드를위한 널 포인터가 아닙니다.)
pqgetLength
바이트의 필드 값의 실제 길이를 반환합니다. 행 및 열 숫자는 0에서 시작합니다.
int pqgetlength (const pg토토 커뮤니티ult *res, int row_number, int column_number);
이것은 특정 데이터의 실제 데이터 길이입니다.
값, 즉, 객체의 크기는pqgetValue
. 텍스트 데이터의 경우
형식 이것은와 동일합니다.strlen ()
. 이진 형식의 경우 이것은입니다
필수 정보. 하나는not의존pqfsize
실제 데이터를 얻으려면
길이.
PQNPARAMS
준비된 매개 변수 수를 반환합니다 성명.
int pqnparams (const pg토토 커뮤니티ult *res);
이 기능은 검사 할 때만 유용합니다
의 결과PQDESCREPREPARED
. 다른 유형의 경우
쿼리는 0을 반환합니다.
PQPARAMTYPE
표시된 문의 데이터 유형을 반환합니다 매개 변수. 매개 변수 번호는 0에서 시작합니다.
OID PQPARAMTYPE (const pg토토 커뮤니티ult *res, int param_number);
이 기능은 검사 할 때만 유용합니다
의 결과PQDESCREPREPARED
. 다른 유형의 경우
쿼리는 0을 반환합니다.
PQPRINT
모든 행과 선택적으로 열을 인쇄합니다 지정된 출력 스트림의 이름.
void pqprint (파일 *fout, / *출력 스트림 * / const pg토토 커뮤니티ult *res, const pqprintopt *po); typedef struct PQBOOL 헤더; / * 출력 필드 제목 및 행 카운트 인쇄 */ pqbool 정렬; / * 채우기 필드 정렬 */ PQBOOL 표준; / * Old Brain Dead 형식 */ PQBOOL HTML3; / * 출력 HTML 테이블 */ PQBOOL 확장; / * 테이블 확장 */ PQBOOL 호출기; / * 필요한 경우 출력을 위해 호출기를 사용하십시오 */ char *fieldsep; / * 필드 분리기 */ char *tableopt; / * HTML 테이블 요소의 속성 */ char *캡션; / * HTML 테이블 캡션 */ char ** fieldname; / * 교체 필드 이름의 널리 터진 배열 */ pqprintopt;
이 함수는 이전에 사용되었습니다PSQL쿼리 결과를 인쇄하려면 이것은 더 이상 그렇지 않습니다. 그것은 모든 것을 가정합니다 데이터는 텍스트 형식입니다.
이 기능은에서 다른 정보를 추출하는 데 사용됩니다.pg토토 커뮤니티ult개체.
pqcmdstatus
SQL 토토 커뮤니티에서 토토 커뮤니티 상태 태그를 반환합니다 생성 한pg토토 커뮤니티ult.
char *pqcmdstatus (pg토토 커뮤니티ult *res);
일반적으로 이것은 토토 커뮤니티의 이름 일뿐입니다.
행 수와 같은 추가 데이터가 포함될 수 있습니다.
가공. 발신자는 결과를 자유롭게하지 않아야합니다
곧장. 관련이 해방 될 것입니다pg토토 커뮤니티ult핸들이 전달됩니다PQCLEAR
.
pqcmdtuples
SQL의 영향을받는 행 수를 반환합니다 토토 커뮤니티.
char *pqcmdtuples (pg토토 커뮤니티ult *res);
이 함수는 숫자를 포함하는 문자열을 반환합니다
의 영향을받는 줄SQLpg토토 커뮤니티ult. 이 기능은 할 수 있습니다
a의 실행 후에 만 사용됩니다.select, 테이블 작성
처럼, 삽입, 업데이트, 삭제,
움직임, Fetch또는COPY진술 또는 anexecuteof a
포함 된 준비 쿼리삽입, 업데이트,
또는삭제진술. 만약
생성 한 토토 커뮤니티pg토토 커뮤니티ult다른 것이 었습니다.pqcmdtuples
반환합니다
빈 문자열. 발신자는 반환 값을 자유롭게하지 않아야합니다
곧장. 관련이 해방 될 것입니다pg토토 커뮤니티ult핸들이 전달됩니다PQCLEAR
.
pqoidvalue
삽입 된 행의 OID를 반환합니다.SQL토토 커뮤니티은삽입정확히 하나를 삽입했습니다 OID가있는 테이블로 연습하거나executea 적합한삽입진술. 그렇지 않으면이 함수가 반환됩니다Invalidoid. 이 기능도 반환됩니다Invalidoid테이블이 영향을받는 경우 에 의해삽입진술은 그렇지 않습니다 OIDS 포함.
OID pqoidValue (const pg토토 커뮤니티ult *res);
pqoidstatus
이 함수는에 찬성하여 더 이상 사용되지 않습니다.pqoidvalue
그리고 스레드 안전이 아닙니다. 그것
삽입 된 행의 OID로 문자열을 반환하고pqoidvalue
OID를 반환합니다
값.
char *pqoidstatus (const pg토토 커뮤니티ult *res);
pqescapeliteral
char *pqescapeliteral (pgconn *conn, const char *str, size_t 길이);
PQescapeliteral
탈출
SQL 토토 커뮤니티 내에서 사용할 문자열. 이것은 유용합니다
SQL에서 데이터 값을 문자 그대로 상수로 삽입 할 때
토토 커뮤니티. 특정 문자 (예 : 인용문 및
백 슬래시)가 존재하지 않도록 탈출해야합니다
SQL Parser가 특별히 해석했습니다.PQESCAPELITERAL
이를 수행합니다
작업.
PQESCAPELITERAL
반환
탈출 한 버전의str메모리의 매개 변수와 함께 할당malloc ()
. 이 기억은 해제되어야합니다
사용pqfreemem ()
언제
결과는 더 이상 필요하지 않습니다. 종료 제로 바이트는입니다
필요하지 않으며, 계산해서는 안됩니다길이. (종료 제로 바이트가있는 경우
이전에 발견길이바이트는입니다
가공,PQESCAPELITERAL
0에서 멈 춥니 다. 그러므로 행동은 오히려Strncpy
.) 리턴 문자열
모든 특수 캐릭터가 교체하여
에 의해 올바르게 처리PostgreSQL문자열 리터럴 파서. 에이
제로 바이트 종단도 추가됩니다. 단일 따옴표
주변을 둘러싼PostgreSQL문자열 리터럴입니다
결과 문자열에 포함.
on Error,pqescapeliteral
반환NULL그리고 적절한 메시지가 저장됩니다
그만큼conn개체.
팁 :특히 중요합니다 줄을 다룰 때 적절한 탈출 신뢰할 수없는 출처에서 받았습니다. 그렇지 않으면 보안 위험이 있습니다 : 당신은에 취약합니다"SQL 주입"공격 원치 않는 SQL 토토 커뮤니티이 귀하에게 공급되는 경우 데이터 베이스.
필요하지도 않거나 정확하지 않다는 점에 유의하십시오.
데이터 값이 별도로 전달 될 때 탈출
매개 변수PQEXECPARAMS
또는 그 형제 루틴.
PQESCAPEINDIFIER
char *pqescapeidentifier (pgconn *conn, const char *str, size_t 길이);
PQESCAPEINDIFIER
SQL 식별자로 사용하기 위해 문자열을 탈출합니다.
표, 열 또는 함수 이름. 이것은 a
사용자 제공 식별자에는 특수 문자가 포함될 수 있습니다
그렇지 않으면
SQL 파서의 식별자 또는 식별자
케이스가 있어야하는 대문자가 포함될 수 있습니다
보존.
PQESCAPEINDIFIER
|str매개 변수는 메모리에서 SQL 식별자로 빠져 나갔습니다
할당malloc ()
.
이 메모리는를 사용하여 해제되어야합니다.pqfreemem ()
결과가 아니오 인 경우
더 오래 필요합니다. 종료 제로 바이트는 필요하지 않습니다.
그리고 계산해서는 안됩니다길이. (종료 제로 바이트가있는 경우
이전에 발견길이바이트는입니다
가공,PQESCAPEINDIFIER
0에서 멈 춥니 다.
그러므로 행동은 오히려Strncpy
.) 리턴 문자열에는 모든 것이 있습니다
특수 문자가 올바르게 교체되었습니다
SQL 식별자로 처리됩니다. 종료 제로 바이트
또한 추가됩니다. 반환 문자열도 둘러싸여 있습니다
이중 인용문으로.
on Error,PQESCAPEINDIFIER
반환NULL그리고 적절한 메시지가 저장됩니다
그만큼conn개체.
팁 :문자열 리터럴과 마찬가지로 방지합니다 SQL 주입 공격, SQL 식별자는 있어야합니다 그들이 신뢰할 수없는 사람에게서받을 때 탈출했습니다 원천.
PQESCAPESTRINGCONN
SIZE_T PQESCAPESTRINGCONN (PGCONN *CONN, char *to, const char *from, size_t 길이, int *error);
PQESCAPESTRINGCONN
끈 리터럴을 탈출합니다.PQESCAPELITERAL
. 같지 않은PQESCAPELITERAL
, 발신자입니다
적절한 크기의 버퍼를 제공합니다.
뿐만 아니라,PQESCAPESTRINGCONN
생성되지 않습니다
주변을 둘러싼 단일 따옴표PostgreSQL문자열 리터럴; 그들
결과가 다음과 같은 SQL 토토 커뮤니티에 제공되어야합니다.
삽입. 매개 변수From첫 번째 캐릭터를 가리 킵니다
탈출 할 문자열과길이매개 변수는 수를 제공합니다
이 문자열의 바이트. 종료 제로 바이트는 아닙니다
필수, 계산해서는 안됩니다길이. (종료 제로 바이트가있는 경우
이전에 발견길이바이트는입니다
가공,PQESCAPESTRINGCONN
0에서 멈 춥니 다.
그러므로 행동은 오히려strncpy
.)to적어도 하나를 고정 할 수있는 버퍼를 가리켜
값의 두 배보다 더 많은 바이트길이, 그렇지 않으면 동작입니다
한정되지 않은. 행동이 마찬가지로 행동이 정의되지 않습니다toandFrom문자열 중첩.
오류매개 변수입니다 아니다NULL, 그때*오류성공시 0이 아닌 0으로 설정되었습니다 오류가 발생합니다. 현재 유일한 오류 조건 소스 문자열에 유효하지 않은 멀티 바이트 인코딩이 포함됩니다. 출력 문자열은 여전히 오류에서 생성되지만 서버가 기형으로 거부 할 것으로 예상됩니다. 오류시 적절한 메시지가에 저장됩니다.Conn개체,오류isnull.
PQESCAPESTRINGCONN
작성된 바이트 수를 반환합니다to, 종료 0을 포함하지 않습니다
바이트.
PQESCAPESTRING
PQescapestring
is
구형, 더 이상 사용되지 않은PQESCAPESTRINGCONN
.
SIZE_T PQESCAPESTRING (char *to, const char *from, size_t 길이);
유일한 차이점PQESCAPESTRINGCONN
PQESCAPESTRING
취하지 않습니다pgconn또는오류매개 변수. 이 때문에, 그것은
연결에 따라 동작을 조정할 수 없습니다
속성 (캐릭터 인코딩 등) 및 따라서잘못된 결과. 또한 오류를보고 할 방법이 없습니다
정황.
PQESCAPESTRING
할 수 있습니다
하나만으로 작동하는 클라이언트 프로그램에서 안전하게 사용PostgreSQL연결 at
시간 (이 경우 필요한 것이 무엇인지 알 수 있습니다.
알다"무대 뒤에서"). ~ 안에
다른 상황은 보안 위험이므로
유리한PQESCAPESTRINGCONN
.
PQESCAPEBYTEACONN
SQL 토토 커뮤니티 내에서 사용하기 위해 이진 데이터를 Escapes
유형BYTEA. 와 마찬가지로PQESCAPESTRINGCONN
, 이것은입니다
데이터를 SQL에 직접 삽입 할 때만 사용됩니다
토토 커뮤니티 문자열.
부호없는 char *pqescapebyteaconn (pgconn *conn, 서명되지 않은 char *에서, size_t from_length, size_t *to_length);
부분적으로 사용하면 특정 바이트 값을 피해야합니다.
ABYTEA문자 그대로SQL진술.PQESCAPEBYTEACONN
탈출
HEX 인코딩 또는 백 슬래시 탈출을 사용하는 바이트.
보다섹션 8.4더 많은 정보.
theFrom매개 변수 포인트 탈출 할 문자열의 첫 바이트에 그리고from_length매개 변수 이 바이너리 스트링에서 바이트 수를 제공합니다. (에이 제로 바이트 종단은 필요하거나 계산되지 않습니다.) 그만큼to_length매개 변수 포인트 결과적인 탈출 된 문자열을 보유 할 변수로 길이. 이 결과 문자열 길이에는 다음이 포함됩니다 결과의 제로 바이트 종단.
PQESCAPEBYTEACONN
탈출 한 버전의를 반환합니다.From메모리의 파라미터 바이너리 스트링
할당malloc ()
.
이 메모리는를 사용하여 해제되어야합니다.pqfreemem ()
결과가 아니오 인 경우
더 오래 필요합니다. 반환 문자열에는 모두 특별합니다
캐릭터가 올바르게 될 수 있도록 캐릭터가 교체되었습니다
에 의해 처리PostgreSQL문자열 리터럴 파서,
그리고BYTEA입력 함수. 에이
제로 바이트 종단도 추가됩니다. 단일 따옴표
주변을 둘러싼PostgreSQL문자열 리터럴은 아닙니다
결과 문자열의 일부.
오류가 발생하면 널 포인터가 반환되고 적합합니다. 오류 메시지가에 저장됩니다.conn개체. 현재 유일한 것입니다 가능한 오류는 결과에 대한 메모리가 충분하지 않습니다 끈.
PQESCAPEBYTEA
PQESCAPEBYTEA
is
구형, 더 이상 사용되지 않은PQESCAPEBYTEACONN
.
부호없는 char *pqescapebytea (const unsigned char *from, size_t from_length, size_t *to_length);
유일한 차이점PQESCAPEBYTEACONN
PQESCAPEBYTEA
apgconn매개 변수. 때문에
이것,PQESCAPEBYTEA
can
단일을 사용하는 클라이언트 프로그램에서만 안전하게 사용됩니다PostgreSQL연결 at
시간 (이 경우 필요한 것이 무엇인지 알 수 있습니다.
알다"무대 뒤에서"). 그것잘못 될 수 있습니다
결과다중 사용 프로그램에 사용되는 경우
데이터베이스 연결 (사용PQESCAPEBYTEACONN
그러한 경우).
PQUNESCAPEBYTEA
이진 데이터의 문자열 표현을 변환합니다
이진 데이터 - 반대PQESCAPEBYTEA
. 이것은 때 필요합니다
검색BYTEA텍스트의 데이터
형식이지만 이진 형식으로 검색 할 때는 그렇지 않습니다.
부호없는 char *pqunescapebytea (const unsigned char *from, size_t *to_length);
theFrom매개 변수 포인트
와 같은 문자열에pqgetValue
A에 적용되는 시점BYTEA열.PQUNESCAPEBYTEA
이 문자열을 변환합니다
이진 표현으로의 표현. 돌아옵니다
로 할당 된 버퍼에 대한 포인터malloc ()
또는NULLON 오류로, 크기를 넣습니다
버퍼에서to_length. 그만큼
결과를 사용하여 해방해야합니다PQFREEMEM
더 이상 없을 때
필요합니다.
이 변환은 정확히 반대가 아닙니다PQESCAPEBYTEA
문자열은 예상되지 않습니다"탈출"|pqgetValue
. 특히 이것은 의미합니다
문자열 인용 고려 사항이 필요하지 않습니다
그래서 필요 없어pgconn매개 변수.