이 문서는 지원되지 않는 PostgreSQL 버전에 대한 것입니다.
다음에 대한 동일한 페이지를 보고 싶을 수도 있습니다.PostgreSQL : 문서 : 17 : 32.3. 토토 꽁 머니 실행 함수버전 또는 위에 나열된 다른 지원 버전 중 하나를 사용하세요.

1.3. 토토 꽁 머니 실행 기능

데이터베이스 서버에 대한 연결이 성공적으로 이루어지면 설정된 경우 여기에 설명된 함수는 SQL을 수행하는 데 사용됩니다. 쿼리 및 토토 꽁 머니.

1.3.1. 주요 루틴

  • PQexec다음에 명령을 제출하세요 서버에 접속하고 결과를 기다립니다.

    PGresult *PQexec(PGconn *conn,
                     const char *쿼리);

    a를 반환토토 꽁 머니.PGresult포인터 또는 NULL 포인터일 수도 있습니다. NULL이 아닌 포인터는 메모리가 부족한 경우를 제외하고는 일반적으로 반환됩니다. 토토 꽁 머니을 보낼 수 없는 등의 심각한 오류 백엔드. NULL이 반환되면 a처럼 처리되어야 합니다.PGRES_FATAL_ERROR결과. 사용PQerrorMessage더 많이 얻으려면 오류에 대한 정보입니다.

PGresult구조 백엔드에서 반환된 결과를 캡슐화토토 꽁 머니.libpq응용 프로그램 프로그래머는 조심해야 토토 꽁 머니 유지하기 위해PGresult추상화. 아래 접근자 기능을 사용하여 내용PGresult. 피하다 의 필드를 직접 참조토토 꽁 머니.PGresult주제이기 때문에 구조 앞으로는 변할 것이다. (시작부터)포스트그레SQL6.4, 구조체의 정의PGresult제공되지도 않습니다libpq-fe.h. 오래된 코드가 있는 경우 액세스PGresult필드를 직접적으로, 포함하면 계속 사용할 수 있습니다.libpq-int.h또한 문제를 해결하는 것이 좋습니다. 코드는 곧 제공됩니다.)

  • PQresultStatus다음을 반환합니다. 명령의 결과 상태입니다.

    ExecStatusType PQresultStatus(const PGresult *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, 루틴 설명 아래는 에서 반환된 행을 검색하는 데 사용할 수 있습니다. 쿼리. 검색하는 데 발생하는 SELECT 토토 꽁 머니에 유의하세요. 0개의 행이 여전히 표시됩니다.PGRES_TUPLES_OK. PGRES_COMMAND_OK다음을 수행할 수 있는 명령용입니다. 행(INSERT, UPDATE 등)을 반환하지 않습니다. 의 응답PGRES_EMPTY_QUERY종종 노출 클라이언트 소프트웨어의 버그입니다.

  • PQresStatus변환합니다 PQresultStatus가 문자열로 반환한 열거형 상태 코드를 설명하는 상수입니다.

    char *PQresStatus(ExecStatusType 상태);
  • PQresultErrorMessage쿼리와 관련된 오류 메시지를 반환토토 꽁 머니. 오류가 없으면 빈 문자열입니다.

    char *PQresultErrorMessage(const PGresult *res);

    즉시 다음PQexec또는PQgetResult전화,PQerrorMessage(연결 시)는 와 동일한 문자열을 반환토토 꽁 머니.PQresultErrorMessage(결과에 대해). 그러나 aPGresult유지됩니다 오류 메시지는 파괴될 때까지 표시되지만 연결은 후속 작업이 완료되면 오류 메시지가 변경됩니다. 완료. 사용PQresultErrorMessage원할 때 특정과 관련된 상태를 알 수 있습니다.PGresult; 사용PQerrorMessage당신이 알고 싶을 때 연결에 대한 최신 작업의 상태입니다.

  • PQclear저장공간 확보 와 연관됨PGresult. 모든 쿼리 결과는 다음을 통해 해제되어야 합니다.PQclear더 이상 필요하지 않은 경우.

    void PQclear(PQresult *res);

    당신은 다음을 유지할 수 있습니다.PGresult필요한 한 계속해서 반대하십시오. 그것은 가지 않는다 새 쿼리를 토토 꽁 머니하거나 쿼리를 닫더라도 연결. 이를 제거하려면 전화해야 합니다.PQclear. 이를 수행하지 않으면 결과가 발생토토 꽁 머니. 프런트엔드 애플리케이션에서 메모리 누수가 발생했습니다.

  • PQmakeEmptyPGresult빈 공간을 구성토토 꽁 머니PGresult주어진 상태의 개체입니다.

    PGresult* PQmakeEmptyPGresult(PGconn *conn, ExecStatusType 상태);

    이것은libpq의 빈 공간을 할당하고 초기화하는 내부 루틴PGresult객체. 수출된다 일부 응용 프로그램에서는 결과를 생성하는 것이 유용하다고 생각하기 때문에 개체(특히 오류 상태의 개체) 스스로. 만일아님 NULL 및 상태는 오류를 나타냅니다. 연결의 현재 errorMessage는에 복사됩니다.PGresult.참고하세요PQclear결국 호출되어야 함 a와 마찬가지로 객체PGresult반환자:libpq그 자체.

1.3.2. 이스케이프 문자열 SQL 쿼리에 포함

PQescapeString이스케이프 SQL 쿼리 내에서 사용할 문자열입니다.

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

다음에서 받은 문자열을 포함하려는 경우 신뢰할 수 없는 출처(예: 무작위 사용자가 입력한 값), SQL에 직접 포함할 수 없습니다. 보안상의 이유로 문의합니다. 대신에 인용을 해야 합니다. SQL에서 다르게 해석되는 특수 문자 파서.

PQescapeString이것을 수행토토 꽁 머니 운영.from다음을 가리킵니다. 이스케이프할 문자열의 첫 번째 문자길이매개변수는 이 문자열의 문자 수(종료 0바이트는 필요하지도 않고 계산되지도 않음).다음을 수행할 수 있는 버퍼를 가리켜야 합니다. 값의 두 배보다 최소한 하나 이상의 문자를 보유하십시오.길이, 그렇지 않으면 동작 정의되지 않았습니다. 에게 전화PQescapeString다음의 이스케이프 버전을 작성합니다.from문자열을버퍼, 특수 교체 해를 끼치 지 않도록 문자를 추가하고 0바이트를 종료토토 꽁 머니. 둘러싸야 하는 작은따옴표포스트그레SQL문자열 리터럴은 다음과 같습니다. 결과 문자열의 일부가 아닙니다.

PQescapeString반환 쓴 문자 수, 종료 0바이트를 포함하지 않음. 다음과 같은 경우 동작이 정의되지 않습니다.그리고from문자열이 겹칩니다.

1.3.3. 바이너리 문자열 이스케이프 SQL 쿼리에 포함

PQescapeBytea바이너리를 이스케이프토토 꽁 머니. 문자열(바이테아유형) SQL 내에서 사용 쿼리.

부호 없는 문자 *PQescapeBytea(부호 없는 문자 *from,
                                         size_t from_length,
                                         size_t *to_length);

확실함ASCII문자반드시탈출(하지만 모든 문자5월수 이스케이프됨) a의 일부로 사용되는 경우바이테아an의 문자열 리터럴SQL성명. 일반적으로 문자를 이스케이프하려면 문자가 변환됩니다. 십진수와 동일한 세 자리 8진수로ASCII값, 앞에는 백슬래시 두 개. 작은따옴표(') 및 백슬래시(\) 문자에는 특별한 대체 이스케이프 시퀀스가 있습니다. 참조사용자 가이드더 많은 정보를 원하시면.PQescapeBytea이것을 수행합니다 최소한의 필수 문자만 이스케이프 처리합니다.

from매개변수는 다음을 가리킵니다. 이스케이프할 문자열의 첫 번째 문자from_length매개변수 이 이진 문자열의 문자 수를 반영합니다(a 0바이트를 종료하는 것은 필요하지도 계산되지도 않습니다.)to_length매개변수는 다음을 가리켜야 합니다. 결과 이스케이프 문자열을 보유하는 데 적합한 버퍼로 길이. 결과 문자열 길이에는 다음이 포함되지 않습니다. 결과의 0바이트를 종료합니다.

PQescapeBytea반환 이스케이프 버전의from매개변수 바이너리 문자열을 호출자 제공 버퍼로 변환합니다. 는 반환 문자열에는 모든 특수 문자가 대체되어 PostgreSQL 문자열 리터럴로 적절하게 처리될 수 있습니다. 파서 및바이테아입력 함수. 에이 0바이트 종료도 추가됩니다. 작은따옴표 PostgreSQL 문자열 리터럴을 둘러싸야 합니다. 결과 문자열입니다.

1.3.4. SELECT 결과 검색 중 정보

  • PQntuples다음을 반환합니다. 쿼리 결과의 튜플(행) 수입니다.

    int PQntuples(const PGresult *res);
  • PQn필드다음을 반환합니다. 쿼리의 각 행에 있는 필드(열) 수 결과.

    int PQnfields(const PGresult *res);
  • PQfname필드를 반환토토 꽁 머니. (열) 주어진 필드 인덱스와 연관된 이름입니다. 필드 인덱스는 0부터 시작토토 꽁 머니.

    char *PQfname(const PGresult *res,
                        int field_index);
  • PQf번호다음을 반환합니다. 해당 필드와 연관된 필드(열) 인덱스 이름.

    int PQfnumber(const PGresult *res,
                  const char *필드_이름);

    주어진 이름이 일치하지 않는 경우 -1이 반환됩니다. 필드.

  • PQftype필드를 반환토토 꽁 머니. 주어진 필드 인덱스와 연관된 유형입니다. 정수 반환된 것은 해당 유형의 내부 코딩입니다. 필드 인덱스 0부터 시작하세요.

    Oid PQftype(const PGresult *res,
                int field_index);

    시스템 테이블을 쿼리할 수 있습니다.pg_type이름과 속성을 얻으려면 다양한 데이터 유형.OID24517_24571src/include/catalog/pg_type.h소스에서 나무.

  • PQfmod다음을 반환합니다. 연관된 필드의 유형별 수정 데이터 주어진 필드 인덱스로. 필드 인덱스는 0부터 시작합니다.

    int PQfmod(const PGresult *res,
               int field_index);
  • PQfsize크기를 반환토토 꽁 머니. 해당 필드와 연관된 필드의 바이트 단위 색인. 필드 인덱스는 0부터 시작토토 꽁 머니.

    int PQfsize(const PGresult *res,
                int field_index);

    PQfsize공간을 반환토토 꽁 머니. 데이터베이스 튜플에서 이 필드에 할당됩니다. 서버의 이진 표현 크기를 의미토토 꽁 머니. 데이터 유형. 필드가 가변적이면 -1이 반환됩니다. 크기.

  • PQbinaryTuples1을 반환합니다. PGresult에 바이너리 튜플 데이터가 포함되어 있으면 0입니다. ASCII 데이터가 포함되어 있습니다.

    int PQbinaryTuples(const PGresult *res);

    현재 바이너리 튜플 데이터는 다음을 통해서만 반환될 수 있습니다. 바이너리 커서에서 데이터를 추출하는 쿼리입니다.

1.3.5. SELECT 결과 검색 중 값

  • PQgetvalue다음을 반환합니다. a의 한 튜플(행)에 대한 단일 필드(열) 값PGresult. 튜플과 필드 인덱스는 0부터 시작토토 꽁 머니.

    char* PQgetvalue(const PGresult *res,
                     정수 tup_num,
                     int field_num);

    대부분의 쿼리에서 반환된 값은PQgetvalueNull 종료 문자입니다. 속성 값의 문자열 표현입니다. 하지만 만일PQbinaryTuples()는 1이고, 에서 반환된 값PQgetvalue은 내부 유형의 바이너리 표현입니다. 백엔드 서버의 형식(크기는 포함되지 않음) 단어(필드가 가변 길이인 경우). 그 다음은 데이터를 캐스팅하고 변환하는 것은 프로그래머의 책임입니다. 올바른 C 유형. 에서 반환된 포인터PQgetvalue일부인 저장소를 가리킵니다. 의PGresult구조. 하나 수정해서는 안 되며 명시적으로 복사해야 토토 꽁 머니. 그 가치가 만료된 이후에 사용될 경우 다른 저장소에 귀속됩니다. 일생 동안PGresult구조 자체.

  • PQgetisnull필드를 테스트토토 꽁 머니 NULL 항목의 경우. 튜플 및 필드 인덱스는 0부터 시작토토 꽁 머니.

    int PQgetisnull(const PGresult *res,
                    정수 tup_num,
                    int field_num);

    이 함수는 필드에 NULL이 포함되어 있으면 1, 0을 반환합니다. null이 아닌 값이 포함된 경우. (참고하세요PQgetvalue빈 문자열을 반환합니다. NULL 필드의 경우 널 포인터가 아닙니다.)

  • PQgetlength다음을 반환합니다. 필드(속성) 값의 길이(바이트)입니다. 튜플과 필드 인덱스는 0부터 시작합니다.

    int PQgetlength(const PGresult *res,
                    정수 tup_num,
                    int field_num);

    이것은 특정 데이터에 대한 실제 데이터 길이입니다 값, 즉 가 가리키는 객체의 크기입니다.PQgetvalue. 참고하세요 문자로 표현된 값, 이 크기는 거의 관련이 없습니다. 보고된 바이너리 크기로PQfsize.

  • PQprint모든 내용을 인쇄토토 꽁 머니. 튜플 및 선택적으로 속성 이름 지정된 출력 스트림.

    void PQprint(FILE* fout, /* 출력 스트림 */
                 const PGresult *res,
                 const PQprintOpt *po);
    
    구조체 
        pqbool 헤더;      /* 출력 필드 제목과 행 개수를 인쇄합니다 */
        pqbool 정렬;       /* 필드 채우기 채우기 */
        pqbool 표준;    /* 오래된 뇌사 형식 */
        pqbool html3;       /* HTML 테이블 출력 */
        pqbool 확장;    /* 테이블 확장 */
        pqbool 호출기;       /* 필요한 경우 출력을 위해 호출기를 사용합니다 */
        char *fieldSep;   /* 필드 구분자 */
        char *tableOpt;   /* HTML에 삽입테이블 ...*/
        문자 *캡션;    /* HTML캡션*/
        char **필드명; /* null로 끝나는 대체 필드 이름 배열 */
     PQprintOpt;

    이 기능은 이전에 다음에서 사용되었습니다.psql질의 결과를 인쇄하려면, 하지만 이것은 더 이상 그렇지 않으며 이 기능도 더 이상 작동하지 않습니다. 적극적으로 지원합니다.

1.3.6. 비SELECT 결과 검색 정보

  • PQcmd상태다음을 반환합니다. 생성된 SQL 명령의 명령 상태 문자열PGresult.

    char * PQcmdStatus(const PGresult *res);
  • PQcmdTuples다음을 반환합니다. SQL 명령의 영향을 받은 행 수입니다.

    char * PQcmdTuples(const PGresult *res);

    만약SQL토토 꽁 머니 생성된 것은PGresult이었음 INSERT, UPDATE 또는 DELETE, 다음을 포함하는 문자열을 반환합니다. 영향을 받는 행 수 명령이 무엇이든 있었다면 그렇지 않으면 빈 문자열을 반환합니다.

  • PQoid값다음을 반환합니다. 삽입된 행의 객체 ID(SQL명령은 다음을 삽입한 INSERT였습니다. OID가 있는 테이블에 정확히 하나의 행이 있습니다. 그렇지 않으면, 반품InvalidOid.

    Oid PQoidValue(const PGresult *res);

    유형오이드그리고 상수InvalidOid다음과 같이 정의됩니다. 다음을 포함합니다.libpq헤더 파일. 둘 다 정수 유형입니다.

  • PQoidStatus다음을 반환합니다. 삽입된 행의 객체 ID가 있는 문자열(SQL명령은 삽입. (문자열은 다음과 같습니다.0if INSERT가 정확히 하나의 행을 삽입하지 않았거나 대상이 테이블에는 OID가 없습니다.) 명령이 INSERT, 빈 문자열을 반환합니다.

    char * PQoidStatus(const PGresult *res);

    이 기능은 다음을 위해 더 이상 사용되지 않습니다.PQoid값그리고 스레드로부터 안전하지 않습니다.