이 문서는 지원되지 않는 버전의 PostgreSQL을위한 것입니다.
당신은에 대해 같은 페이지를 볼 수 있습니다PostgreSQL : 문서 : 17 : 32.3. 토토 꽁 머니 실행 함수버전 또는 위에 나열된 다른 지원 버전 중 하나입니다.

1.3. 명령 실행 함수

데이터베이스 서버에 대한 연결이 성공적으로 성공하면 여기에 설명 된 기능은 SQL을 수행하는 데 사용됩니다. 쿼리 및 명령.

1.3.1. 주요 루틴

  • PQEXEC명령을 제출하십시오 서버와 결과를 기다립니다.

    토토 꽁 머니 *pqexec (pgconn *conn,
                     const char *query);

    반환 a토토 꽁 머니포인터 또는 아마도 널 포인터 일 수 있습니다. 널이 아닌 포인터가 있습니다 일반적으로 메모리 외 조건을 제외하고 반환됩니다 명령을 백엔드. 널이 반환되면 A처럼 취급해야합니다.pgres_fatal_error결과. 사용PQERRORMESSAGE더 많은 것을 얻으려면 오류에 대한 정보.

the토토 꽁 머니구조 백엔드에 의해 반환 된 결과를 캡슐화합니다.libpq응용 프로그램 프로그래머는 조심해야합니다 유지하려면토토 꽁 머니추상화. 아래의 액세서 기능을 사용하여 의 내용토토 꽁 머니. 피하다 의 필드를 직접 참조토토 꽁 머니구조가 주제이기 때문에 구조 미래에 변화. (시작PostgreSQL6.4, 구조물의 정의토토 꽁 머니|libpq-fe.h. 오래된 코드가 있다면 액세스토토 꽁 머니직접 필드, 를 포함하여 계속 사용할 수 있습니다libpq-int.h도 고치는 것이 좋습니다 곧 코드.)

  • pqresultstatus반환 명령의 결과 상태.

    execstatustype pqresultstatus (const 토토 꽁 머니 *res)

    pqresultstatus반환 할 수 있습니다 다음 값 중 하나 :

    • pgres_empty_query- 백엔드로 전송 된 문자열이 비어있었습니다.

    • pgres_command_ok- NO를 반환하는 명령의 성공적인 완료 데이터

    • pgres_tuples_ok- 쿼리가 성공적으로 실행

    • pgres_copy_out- 복사 (서버에서) 데이터 전송 시작

    • pgres_copy_in- 복사 (서버로) 데이터 전송 시작

    • pgres_bad_response- 서버의 응답은 이해되지 않았습니다

    • pgres_nonfatal_error

    • pgres_fatal_error

    결과 상태가pgres_tuples_ok, 그런 다음 루틴이 설명되었습니다 아래는 질문. 검색되는 선택된 명령 제로 행이 여전히 표시pgres_tuples_ok. pgres_command_ok는 할 수있는 명령입니다 행을 반환하지 마십시오 (삽입, 업데이트 등). 의 응답pgres_empty_query종종 a 클라이언트 소프트웨어의 버그.

  • pqresstatus변환 열거 된 유형은 pqresultstatus에 의해 문자열로 반환됩니다 상태 코드를 설명하는 상수.

    char *pqresstatus (execstatustype status);
  • PQRESULTERRORMESSAGE쿼리와 관련된 오류 메시지를 반환합니다. 오류가없는 경우 빈 문자열.

    char *pqresulterrormessage (const 토토 꽁 머니 *res);

    바로 다음PQEXEC또는pqgetresultCall,PQERRORMESSAGE(연결 중) 와 같은 문자열을 반환합니다.PQRESULTERRORMESSAGE(결과). 그러나 A토토 꽁 머니유지됩니다 연결은 파괴 될 때까지 오류 메시지입니다 후속 작업이있을 때 오류 메시지가 변경됩니다 완료. 사용PQRESULTERRORMESSAGE원할 때 특정 상태를 알고 있습니다토토 꽁 머니; 사용PQERRORMESSAGE당신이 알고 싶을 때 연결에서 최신 작업의 상태.

  • PQCLEAR스토리지를 해제합니다 관련토토 꽁 머니. 모든 쿼리 결과는를 통해 해제되어야합니다.PQCLEAR더 이상 필요하지 않은 경우.

    void pqclear (pqresult *res);

    당신은 a를 유지할 수 있습니다.토토 꽁 머니필요한 한 오랫동안 객체; 가지 않습니다 새 쿼리를 발행하거나 닫을 때도 연결. 제거하려면 전화해야PQCLEAR. 이렇게하지 않으면 발생합니다 프론트 엔드 애플리케이션에서 메모리 누출.

  • pqmakeemptypy토토 꽁 머니공허한 구성토토 꽁 머니지정된 상태를 가진 개체.

    토토 꽁 머니 * pqmakeemptypy토토 꽁 머니 (pgconn * conn, execstatustype 상태);

    이것은libpq's 빈 내부 루틴을 할당하고 초기화하는토토 꽁 머니개체. 수출됩니다 일부 응용 프로그램에서 결과를 생성하는 것이 유용하다고 생각하기 때문입니다 개체 (특히 오류 상태가있는 개체) 그들 자신. 만약에conn그렇지 않습니다 null 및 상태는 오류, 연결을 나타냅니다 현재 errormessage가에 복사됩니다.토토 꽁 머니.참고PQCLEAR결국 호출해야합니다 객체,와 마찬가지로토토 꽁 머니libpq자체.

1.3.2. 에스케이프 끈 SQL 쿼리에 포함

PQescapestring탈출 a SQL 쿼리 내에서 사용할 문자열.

SIZE_T PQESCAPESTRING (char *to, const char *from, size_t 길이);

수신 된 문자열을 포함하려는 경우 신뢰할 수없는 소스 (예 : 무작위이기 때문에 사용자가 입력), SQL에 직접 포함시킬 수 없습니다. 보안상의 이유로 쿼리. 대신, 당신은 인용해야합니다 SQL에 의해 해석되는 특수 문자 파서.

PQescapestring이를 수행합니다 작업. 그만큼From탈출 할 문자열의 첫 번째 문자, 그만큼길이매개 변수 카운트 이 문자열의 문자 수 (종료 제로 바이트는 필요하거나 계산하지도).to할 수있는 버퍼를 가리 킵니다 값의 두 배 이상을 최소한 하나 이상으로 유지하십시오.길이, 그렇지 않으면 행동 정의되지 않았습니다. 전화PQescapestring탈출 된 버전을 씁니다 그만큼FromString to theto버퍼, 스페셜 교체 그들이 어떤 해를 끼칠 수 없도록 캐릭터를 추가하고 제로 바이트 종단. 주변을 둘러싼 단일 따옴표PostgreSQLString Literals는입니다 결과 문자열의 일부가 아닙니다.

PQescapestring반환 작성자 수to, 종료 제로 바이트는 포함되지 않습니다. 행동이 정의되지 않음toandFrom문자열 중첩.

1.3.3. 이진 문자열 도피 SQL 쿼리에 포함

pqescapebytea이진을 탈출합니다 끈 (BYTEA타입) SQL 내에서 사용합니다 질문.

부호없는 char *pqescapebytea (부호없는 char *from,
                                         size_t from_length,
                                         size_t *to_length);

확실한ASCII캐릭터필수탈출됩니다 (그러나 모든 문자Maybe 탈출) a의 일부로 사용될 때BYTEA문자열 리터럴에서SQL진술. 일반적으로 캐릭터를 피하기 위해 변환됩니다 십진수와 동일한 3 자리 숫자 옥탈 번호로ASCII값 및 그 뒤에 두 개의 백 슬래시. 단일 인용문 ( ') 및 백 슬래시 (\) 캐릭터에는 특별한 대체 탈출 시퀀스가 ​​있습니다. 참조사용자 안내서자세한 내용은PQESCAPEBYTEA이것을 수행합니다 작전, 최소한으로 필요한 문자 만 탈출합니다.

the매개 변수가 탈출 할 문자열의 첫 번째 문자, 그만큼from_length매개 변수 이 바이너리 문자열의 문자 수를 반영합니다 (a 제로 바이트 종단은 필요하거나 계산되지 않습니다). 그만큼to_length매개 변수가 가리킬 것입니다 결과 탈출 된 문자열을 고정하기에 적합한 버퍼에 길이. 결과 문자열 길이에는 포함되지 않습니다 결과의 제로 바이트 종단.

pqescapebytea반환합니다 탈출 한 버전의파라미터 바이너리 스트링, 발신자 제공 버퍼. 그만큼 Return String에는 모든 특수 문자가 교체되어 PostgreSQL 문자열 리터럴에 의해 올바르게 처리 될 수 있습니다 파서, 그리고BYTEA입력 함수. 에이 제로 바이트 종단도 추가됩니다. 하나의 인용문 Postgresql String Literals를 둘러싸고 있어야합니다. 결과 문자열.

1.3.4. 선택 결과 검색 정보

  • pqntuples반환합니다 쿼리 결과의 튜플 수 (행)

    int pqntuples (const 토토 꽁 머니 *res);
  • pqnfields반환합니다 쿼리의 각 행에 필드 (열) 수 결과.

    int pqnfields (const 토토 꽁 머니 *res);
  • pqfname필드를 반환합니다 (열) 주어진 필드 인덱스와 관련된 이름. 필드 지수는 0에서 시작합니다.

    char *pqfname (const 토토 꽁 머니 *res,
                        int field_index);
  • pqfnumber반환합니다 주어진 필드와 관련된 필드 (열) 인덱스 이름.

    int pqfnumber (const 토토 꽁 머니 *res,
                  const char *field_name);

    23980_24048

  • pqftype필드를 반환합니다 주어진 필드 인덱스와 관련된 유형. 정수 반환 된 것은 유형의 내부 코딩입니다. 현장 지수 0에서 시작합니다.

    OID PQFTYPE (const 토토 꽁 머니 *res,
                int field_index);

    시스템 테이블을 쿼리 할 수 ​​있습니다pg_type의 이름과 속성을 얻습니다 다양한 데이터 유형. 그만큼OID24602_24656SRC/포함/카탈로그/PG_TYPE.H소스에서 나무.

  • PQFMOD반환 관련 필드의 유형 별 수정 데이터 주어진 필드 색인으로. 현장 지수는 0에서 시작합니다.

    int pqfmod (const 토토 꽁 머니 *res,
               int field_index);
  • pqfsize크기를 반환합니다 주어진 필드와 관련된 필드의 바이트 색인. 현장 지수는 0에서 시작합니다.

    int pqfsize (const 토토 꽁 머니 *res,
                int field_index);

    pqfsize공간을 반환합니다 이 필드에 데이터베이스 튜플에 할당되었습니다. 단어 서버의 이진 표현의 크기 데이터 유형. 필드가 가변적 인 경우 -1이 반환됩니다 크기.

  • pqbinaryTuples반환 1 토토 꽁 머니에 이진 튜플 데이터가 포함 된 경우 0 ASCII 데이터를 포함합니다.

    int pqbinaryTuples (const 토토 꽁 머니 *res);

    현재 이진 튜플 데이터는 이진 커서에서 데이터를 추출하는 쿼리.

1.3.5. 선택 결과 검색 값

  • pqgetValue반환 a 단일 필드 (열) a의 1 개의 튜플 (행) 값토토 꽁 머니. 튜플과 필드 지수는 0에서 시작합니다.

    char * pqgetValue (const 토토 꽁 머니 * res,
                     int tup_num,
                     int field_num);

    대부분의 쿼리의 경우pqgetValue는 무효가 종결 된 문자입니다 속성 값의 문자열 표현. 하지만 ifpqbinaryTuples ()is 1, the 값pqgetValue내부의 유형의 이진 표현입니다. 백엔드 서버의 형식 (크기는 포함되지 않습니다. 필드가 가변 길이 인 경우 Word). 그때는입니다 데이터를 캐스팅하고 변환 할 프로그래머의 책임 올바른 C 유형. 포인터는pqgetValue일부인 스토리지를 가리 킵니다 의토토 꽁 머니구조. 하나 수정해서는 안되며 명시 적으로 복사해야합니다. 다른 스토리지에 대한 가치를 지나서 사용하려면 의 수명토토 꽁 머니구조 자체.

  • PQGETISNULL필드를 테스트합니다 널 입구. 튜플 및 현장 지수는 0에서 시작합니다.

    int pqgetisnull (const 토토 꽁 머니 *res,
                    int tup_num,
                    int field_num);

    이 함수는 필드에 null이 포함 된 경우 1, 0 널 값이 아닌 값이 포함 된 경우. (pqgetValue빈 문자열을 반환합니다. 널 필드를위한 널 포인터가 아닙니다.)

  • pqgetLength반환합니다 바이트의 필드 (속성) 값의 길이. 튜플과 현장 지수는 0에서 시작합니다.

    int pqgetlength (const 토토 꽁 머니 *res,
                    int tup_num,
                    int field_num);

    이것은 특정 데이터의 실제 데이터 길이입니다. 값, 즉 객체의 크기입니다.pqgetValue. 주목하십시오 문자 표현 값,이 크기는 할 일이 거의 없습니다 에 의해보고 된 이진 크기로pqfsize.

  • pqprint모든 것을 인쇄합니다 튜플 및 선택적으로 속성 이름은 지정된 출력 스트림.

    void pqprint (파일* fout, /* 출력 스트림* /
                 const 토토 꽁 머니 *res,
                 const pqprintopt *po);
    
    구조 
        PQBOOL 헤더;      / * 출력 필드 제목 및 행 카운트 인쇄 */
        pqbool 정렬;       / * 채우기 필드 정렬 */
        PQBOOL 표준;    / * Old Brain Dead 형식 */
        PQBOOL HTML3;       / * 출력 HTML 테이블 */
        PQBOOL 확장;    / * 테이블 확장 */
        PQBOOL 호출기;       / * 필요한 경우 출력을 위해 호출기를 사용하십시오 */
        char *fieldsep;   / * 필드 분리기 */
        char *tableopt;   /* HTML에 삽입테이블 ...*/
        char *캡션;    /* html캡션*/
        char ** fieldname; / * NULL 교체 필드 이름의 배열 */
     pqprintopt;

    이 함수는 이전에 사용되었습니다PSQL쿼리 결과를 인쇄하려면 더 이상 경우가 아니며이 기능은 더 이상 적극적으로 지원.

1.3.6. 비 선택 결과 검색 정보

  • pqcmdstatus반환합니다 생성 된 SQL 명령에서 명령 상태 문자열 그만큼토토 꽁 머니.

    char * pqcmdstatus (const 토토 꽁 머니 * res);
  • pqcmdTuples반환합니다 SQL 명령에 의해 영향을받는 행 수.

    char * pqcmdtuples (const 토토 꽁 머니 * res);

    SQL명령 생성 한토토 꽁 머니삽입, 업데이트 또는 삭제하면 포함 된 문자열이 반환됩니다 영향을받는 줄의 수. 명령이 무엇이든 경우 그렇지 않으면 빈 문자열을 반환합니다.

  • pqoidvalue반환합니다 삽입 된 행의 객체 IDSQL명령은 삽입 된 삽입물입니다 OID가있는 테이블에 정확히 하나의 행입니다. 그렇지 않으면, 보고Invalidoid.

    OID pqoidValue (const 토토 꽁 머니 *res);

    유형OID및 상수Invalidoid당신은 정의됩니다 포함libpq헤더 파일. 둘 다 정수 유형이 될 것입니다.

  • pqoidstatus반환 a 삽입 된 행의 객체 ID가있는 문자열SQL명령은 an입니다 끼워 넣다. (문자열은0if 인서트는 정확히 하나의 행을 삽입하지 않았거나 대상이 테이블에는 OID가 없습니다.) 명령이 삽입, 빈 문자열을 반환합니다.

    char * pqoidstatus (const 토토 꽁 머니 * res);

    이 함수는에 찬성하여 더 이상 사용되지 않습니다.pqoidvalue그리고 스레드-안전하지 않습니다.