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

31.3.

데이터베이스 서버에 대한 연결이 성공적으로 성공하면

31.3.1. 주요 기능

PQEXEC

서버에 명령을 제출하고

토토 커뮤니티 *pqexec (pgconn *conn, const char *command);

반환 a토토 커뮤니티포인터pqresultstatus함수가되어야합니다pgres_fatal_error).PQERRORMESSAGE얻기 위해

명령 문자열에는 여러 SQL 명령이 포함될 수 있습니다PQEXEC호출은 a시작/커밋명령토토 커뮤니티구조는 결과 만 설명합니다토토 커뮤니티

pqexecparams

서버에 명령을 제출하고

토토 커뮤니티 *pqexecparams (pgconn *conn,

pqexecparamsPQEXEC그러나 제공합니다pqexecparamsis

함수 인수는 다음과 같습니다.

conn

명령을 보낼 연결 객체입니다

명령

실행될 SQL 명령 문자열. 만약에$1, $2

nparams

제공되는 매개 변수 수; 그것은입니다Paramtypes [], Paramvalues ​​[], Paramlengths []FARAMFORMATS []. (배열null언제nparamsis Zero.)

Paramtypes []

지정할 데이터 유형을 OID로 지정합니다Paramtypesisnull또는 특정 요소

Paramvalues ​​[]

매개 변수의 실제 값을 지정합니다. 에이

Paramlengths []

실제 데이터 길이를 지정합니다

FARAMFORMATS []

매개 변수가 텍스트인지 지정합니다 (put a

이진 형식으로 전달되는 값에는 지식이 필요합니다숫자값은 지식이 필요합니다src/backend/utils/adt/numeric.c :: numeric_send ()src/backend/utils/adt/numeric.c :: numeric_recv ().

resultformat

텍스트 형식으로 결과를 얻으려면 0을 지정하고,

의 주요 장점pqexecparamsOverPQEXEC매개 변수 값이 될 수 있습니다

와 달리PQEXEC, pqexecparams최대 하나의 SQL 명령을 허용합니다

팁 :OIDS를 통해 매개 변수 유형을 지정합니다

선택 *에서 mytable에서 x = $ 1 :: bigint;

이 힘 매개 변수$1bigint14719_14785x. 매개 변수 유형 결정 강제,

pqprepare

준비한 문을 작성하라는 요청을 제출합니다

토토 커뮤니티 *pqprepare (pgconn *conn,

pqprepare생성 apqExecprepared. 이 기능은 허용합니다pqprepareis

함수는 이름이 지정된 명령문을 만듭니다stmtname에서쿼리Stringstmtname할 수 있습니다""이름이없는 것을 만들려면$1, $2nparams의 매개 변수 수입니다Paramtypes []. (배열 포인터가 될 수 있습니다null언제nparamsis Zero.)Paramtypes []OID에 의해 데이터를 지정합니다Paramtypesisnull또는nparams; 데이터 유형이 추론됩니다pqdescribeprepared찾을 수있는 수단

withPQEXEC,토토 커뮤니티내용이 서버 측 성공을 나타내는 객체 또는PQERRORMESSAGE더 많은 정보를 얻으려면

사용하기위한 준비된 진술pqExecprepared준비진술. 또한 없지만libpq준비된 삭제를위한 함수딜 로이징그 목적으로 문을 사용할 수 있습니다.

pqExecprepared

준비한 문을 실행하라는 요청을 보냅니다

토토 커뮤니티 *pqexecprepared (pgconn *conn,

pqExecpreparedpqexecparamspqExecprepared지원됩니다

매개 변수는 동일합니다pqexecparamsParamtypes []매개 변수

pqdescribeprepared

에 대한 정보를 얻기위한 요청을 제출합니다

토토 커뮤니티 *pqdescribeprepared (pgconn *conn, const char *stmtname);

pqdescribeprepared응용 프로그램이 a에 대한 정보를 얻을 수 있도록 허용합니다pqdescribeprepared만 지원됩니다

stmtname할 수 있습니다""또는nullTO토토 커뮤니티상태pgres_command_ok반환됩니다.pqnparamsPQPARAMTYPE적용 할 수 있습니다토토 커뮤니티얻기 위해pqnfields, pqfname, pqftype등에 대한 정보를 제공합니다

pqdescribePortal

에 대한 정보를 얻기위한 요청을 제출합니다

토토 커뮤니티 *pqdescribePortal (pgconn *conn, const char *portalname);

pqdescribePortal허용libpq포털에 직접 액세스 할 수는 없지만선언SQL 명령.)pqdescribePortal만 지원됩니다

PortalName할 수 있습니다""또는null이름없는 포털을 참조하려면토토 커뮤니티pgres_command_okISpqnfields, pqfname, pqftype등을에 적용 할 수 있습니다토토 커뮤니티얻기 위해

the토토 커뮤니티구조libpq응용 프로그램 프로그래머가 있어야합니다토토 커뮤니티추상화. 아래의 액세서 기능을 사용하여토토 커뮤니티. 피하다토토 커뮤니티구조가 주제이기 때문에 구조

pqresultstatus

명령의 결과 상태를 반환합니다.

execstatustype pqresultstatus (const 토토 커뮤니티 *res);

pqresultstatuscan

pgres_empty_query

서버로 전송 된 문자열이 비어있었습니다.

pgres_command_ok

반환하는 명령의 성공적인 완료 번호

pgres_tuples_ok

명령의 성공적인 완료select또는show).

pgres_copy_out

(서버에서) 데이터 전송을 복사합니다

pgres_copy_in

(서버로) 데이터 전송이 시작되었습니다.

pgres_bad_response

서버의 응답은 이해되지 않았습니다.

pgres_nonfatal_error

비 치명적 오류 (통지 또는 경고)

pgres_fatal_error

치명적인 오류가 발생했습니다.

pgres_copy_both

복사/out (서버 및에서) 데이터 전송

결과 상태가pgres_tuples_ok그런 다음 함수select0 행을 검색하는 명령은 여전히 ​​표시됩니다pgres_tuples_ok. pgres_command_ok는 할 수있는 명령입니다삽입, 업데이트등). 의 응답pgres_empty_query

상태의 결과pgres_nonfatal_error반환되지 않습니다PQEXEC또는 기타섹션 31.11).

pqresstatus

열거 된 유형을 변환pqresultstatus문자열 상수로

char *pqresstatus (execstatustype status);
PQRESULTERRORMESSAGE

명령과 관련된 오류 메시지를 반환합니다.

char *pqresulterrormessage (const 토토 커뮤니티 *res);

오류가 있으면 반환 된 문자열이 있습니다토토 커뮤니티핸들이 전달됩니다PQCLEAR.

바로 다음PQEXEC또는pqgetresultCall,PQERRORMESSAGE(연결 중)PQRESULTERRORMESSAGE(결과에서).토토 커뮤니티의지PQRESULTERRORMESSAGE원할 때토토 커뮤니티; 사용PQERRORMESSAGE알고 싶을 때

pqresulterrorfield

오류 보고서의 개별 필드를 반환합니다.

char *pqresultterrorfield (const 토토 커뮤니티 *res, int fieldcode);

FieldCode는 오류 필드입니다null이면 반환됩니다토토 커뮤니티오류 나 경고가 아닙니다토토 커뮤니티핸들이 전달됩니다PQCLEAR.

다음 필드 코드를 사용할 수 있습니다.

PG_DIAG_SEVERITY

심각도; 필드 내용은오류, 치명적또는panic(오류 메시지에서) 또는경고, 통지, 디버그, info또는log(통지 메시지에서) 또는 a

PG_DIAG_SQLSTATE

오류에 대한 sqlstate 코드. sqlstate와이즈 토토 : 문서 : 9.1 : 와이즈 토토 오류 와이즈 토토. 이 분야는 현지화 할 수 없으며 항상입니다

PG_DIAG_MESSAGE_PRIMARY

기본 인간 읽을 수있는 오류 메시지

PG_DIAG_MESSAGE_DETAIL

세부 사항 : 선택적 보조 오류 메시지

PG_DIAG_MESSAGE_HINT

힌트 : 선택적인 제안에 대해해야 할 일

pg_diag_statement_position

소수 정수를 포함하는 문자열

pg_diag_internal_position

이것은와 동일하게 정의됩니다.pg_diag_statement_position필드pg_diag_internal_query필드

pg_diag_internal_query

내부적으로 생성 된 텍스트의 텍스트

PG_DIAG_CONTEXT

오류가있는 컨텍스트의 표시

pg_diag_source_file

소스 코드 위치의 파일 이름

pg_diag_source_line

소스 코드 위치의 줄 번호

pg_diag_source_function

소스 코드 함수보고의 이름

클라이언트는 표시 형식을 담당합니다

내부적으로 생성 된 오류libpq심각도와 기본이 있습니다

오류 필드는에서만 사용할 수 있습니다.토토 커뮤니티객체, 아님pgconn개체; 없음PQERRORFIELD기능.

PQCLEAR

토토 커뮤니티. 모든 명령 결과가 있어야합니다PQCLEAR언제

void pqclear (토토 커뮤니티 *res);

당신은 a를 유지할 수 있습니다.토토 커뮤니티필요한만큼 오랫동안 물체; 가지 않습니다PQCLEAR. 이 작업을 수행하지 못합니다

31.3.2. 쿼리 결과 검색

이 기능은 a에서 정보를 추출하는 데 사용됩니다.토토 커뮤니티pgres_tuples_ok). 그들은 또한 될 수 있습니다

pqntuples

쿼리의 행 수 (튜플)를 반환합니다

int pqntuples (const 토토 커뮤니티 *res);
pqnfields

각 행에서 열 (필드) 수를 반환합니다.

int pqnfields (const 토토 커뮤니티 *res);
pqfname

주어진과 관련된 열 이름을 반환합니다토토 커뮤니티핸들이 전달됩니다PQCLEAR.

char *pqfname (const 토토 커뮤니티 *res,

null열이면 반환됩니다

pqfnumber

주어진과 관련된 열 번호를 반환합니다

int pqfnumber (const 토토 커뮤니티 *res,

32844_32913

주어진 이름은 SQL에서 식별자처럼 취급됩니다.

foo로 1을 선택하고, 2, 2 "bar";

결과가 있습니다 :

pqfname (res, 0)foopqfname (res, 1)barpqfnumber (res, "foo")0pqfnumber (res, "foo")0pqfnumber (res, "bar")-1pqfnumber (res, "\"bar \ "")1
pqftable

주어진 테이블의 Oid를 반환합니다.

OID pqftable (const 토토 커뮤니티 *res,

Invalidoidpg_class정확히 결정합니다

유형OID29899_29915Invalidoidlibpq헤더 파일. 둘 다 정수 유형이 될 것입니다.

pqftablecol

열의 열 번호 (테이블 내)를 반환합니다

int pqftablecol (const 토토 커뮤니티 *res,

열 번호가 범위를 벗어난 경우 0이 반환됩니다.

pqfformat

형식을 나타내는 형식 코드를 반환합니다

int pqfformat (const 토토 커뮤니티 *res,

형식 코드 0은 텍스트 데이터를 나타냅니다

pqftype

주어진 열과 관련된 데이터 유형을 반환합니다

OID pqftype (const 토토 커뮤니티 *res,

시스템 테이블을 쿼리 할 수 ​​있습니다pg_type이름과 속성을 얻습니다OID34318_34380src/include/catalog/pg_type.h

pqfmod

연관된 열의 유형 수정자를 반환합니다

int pqfmod (const 토토 커뮤니티 *res,

수정 자 값의 해석은 다음과 같습니다"정보 없음". 대부분의 데이터

pqfsize

관련 열의 바이트로 크기를 반환합니다

int pqfsize (const 토토 커뮤니티 *res,

pqfsize반환합니다

pqbinaryTuples

1 인 경우 1 반환합니다.토토 커뮤니티텍스트 데이터가 포함 된 경우 이진 데이터와 0이 포함되어 있습니다.

int pqbinaryTuples (const 토토 커뮤니티 *res);

이 함수는 더 이상 사용되지 않습니다 (사용을 제외하고COPY)토토 커뮤니티일부에는 텍스트 데이터를 포함합니다pqfformat선호됩니다.pqbinaryTuples1만큼만 반환합니다

pqgetValue

a의 단일 필드 값을 반환합니다토토 커뮤니티. 행과 열토토 커뮤니티핸들이 전달됩니다PQCLEAR.

char *pqgetValue (const 토토 커뮤니티 *res,

텍스트 형식의 데이터의 경우pqgetValueisTypSendtypreceive함수. (가치는입니다

필드 값이 있으면 빈 문자열이 반환됩니다.PQGETISNULLto

포인터가 반환pqgetValue스토리지를 가리 킵니다토토 커뮤니티구조. 가리키는 데이터를 수정해서는 안되며토토 커뮤니티구조 자체.

PQGETISNULL

널 값에 대한 필드를 테스트합니다. 행 및 열 번호

int pqgetisnull (const 토토 커뮤니티 *res,

이 함수는 필드가 널이고 0 인 경우 1을 반환합니다.pqgetValue빈 문자열을 반환합니다.

pqgetLength

필드 값의 실제 길이를 바이트로 반환합니다.

int pqgetlength (const 토토 커뮤니티 *res,

이것은 특정 데이터의 실제 데이터 길이입니다.pqgetValue. 텍스트 데이터의 경우strlen (). 이진 형식의 경우 이것은입니다아님의존pqfsize실제 데이터를 얻으려면

pqnparams

준비된 매개 변수 수를 반환합니다

int pqnparams (const 토토 커뮤니티 *res);

이 기능은 검사 할 때만 유용합니다pqdescribeprepared. 다른 유형의 경우

PQPARAMTYPE

표시된 문의 데이터 유형을 반환합니다

OID PQPARAMTYPE (const 토토 커뮤니티 *res, int param_number);

이 기능은 검사 할 때만 유용합니다pqdescribeprepared. 다른 유형의 경우

pqprint

모든 행과 선택적으로 열을 인쇄합니다

void pqprint (파일 *fout, / *출력 스트림 * /

이 함수는 이전에 사용되었습니다PSQL쿼리 결과를 인쇄하려면

31.3.3. 다른 결과를 검색합니다

이 기능은에서 다른 정보를 추출하는 데 사용됩니다.토토 커뮤니티개체.

pqcmdstatus

SQL 명령에서 명령 상태 태그를 반환합니다토토 커뮤니티.

char *pqcmdstatus (토토 커뮤니티 *res);

일반적으로 이것은 명령의 이름 일뿐입니다.토토 커뮤니티핸들이 전달됩니다PQCLEAR.

pqcmdTuples

SQL의 영향을받는 행 수를 반환합니다

char *pqcmdtuples (토토 커뮤니티 *res);

이 함수는 숫자를 포함하는 문자열을 반환합니다SQL토토 커뮤니티. 이 기능은 할 수 있습니다select, 테이블 작성, 삽입, 업데이트, 삭제, 움직임, Fetch또는COPY성명서 또는 anexecuteof a삽입, 업데이트,삭제진술. 만약토토 커뮤니티다른 것이 었습니다.pqcmdTuples반환합니다토토 커뮤니티핸들이 전달됩니다PQCLEAR.

pqoidvalue

삽입 된 행의 OID를 반환합니다.SQL명령은삽입정확히 하나를 삽입했습니다executea삽입진술.Invalidoid. 이 기능도 반환됩니다Invalidoid테이블이 영향을받는 경우삽입진술은 그렇지 않습니다

OID pqoidValue (const 토토 커뮤니티 *res);
pqoidstatus

이 기능은에 찬성하여 더 이상 사용되지 않습니다.pqoidvalue그리고 스레드 안전이 아닙니다. 그것pqoidvalueOID를 반환합니다

char *pqoidstatus (const 토토 커뮤니티 *res);

31.3.4. 에스케이프 끈

PQESCAPELITERAL
char *pqescapeliteral (pgconn *conn, const char *str, size_t 길이);

PQESCAPELITERAL탈출PQESCAPELITERAL이를 수행합니다

PQESCAPELITERAL반환str메모리의 매개 변수와 함께 할당malloc (). 이 기억은 해제되어야합니다pqfreemem ()길이. (종료 제로 바이트가있는 경우길이바이트는입니다PQESCAPELITERAL0에서 멈 춥니 다. 그러므로 행동은 오히려strncpy.) 리턴 문자열PostgreSQL문자열 리터럴 파서. 에이PostgreSQL문자 그럴은입니다

on Error,PQESCAPELITERAL반환null그리고 적절한 메시지가 저장됩니다conn개체.

팁 :특히 중요합니다"SQL 주입"공격

필요하지 않거나 정확하지 않다는 점에 유의하십시오.pqexecparams또는 그 형제 루틴.

PQESCAPEINDIFIER
char *pqescapeidentifier (pgconn *conn, const char *str, size_t 길이);

PQESCAPEINDIFIER

PQESCAPEINDIFIER|str매개 변수는 메모리에서 SQL 식별자로 빠져 나갔습니다malloc ().pqfreemem ()결과가 아니오 인 경우길이. (종료 제로 바이트가있는 경우길이바이트는입니다PQESCAPEINDIFIER0에서 멈 춥니 다.strncpy.) 리턴 문자열에는 모든 것이 있습니다

on Error,PQESCAPEINDIFIER반환null그리고 적절한 메시지가 저장됩니다conn개체.

팁 :스트링 리터럴과 마찬가지로 방지합니다

PQESCAPESTRINGCONN
SIZE_T PQESCAPESTRINGCONN (PGCONN *CONN,

PQESCAPESTRINGCONN끈 리터럴을 탈출합니다.PQESCAPELITERAL. 같지 않은PQESCAPELITERAL, 발신자는입니다PQESCAPESTRINGCONN생성되지 않습니다PostgreSQL문자열 리터럴; 그들From첫 번째 캐릭터를 가리 킵니다길이매개 변수는 수를 제공합니다길이. (종료 제로 바이트가있는 경우길이바이트는입니다PQESCAPESTRINGCONN0에서 멈 춥니 다.strncpy.) to적어도 하나를 고정 할 수있는 버퍼를 가리 킵니다.길이, 그렇지 않으면 동작입니다toFrom문자열 중첩.

오류매개 변수입니다null,*오류성공시 0이 아닌 0으로 설정되었습니다conn객체, 여부오류isnull.

PQESCAPESTRINGCONN작성된 바이트 수를 반환합니다to, 종료 0을 포함하지 않습니다

PQescapestring

PQescapestringisPQESCAPESTRINGCONN.

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

유일한 차이점PQESCAPESTRINGCONNPQescapestring취하지 않습니다pgconn또는오류매개 변수. 이 때문에, 그것은. 또한 오류를보고 할 방법이 없습니다

PQescapestring할 수 있습니다PostgreSQL연결 at"무대 뒤에서"). ~ 안에PQESCAPESTRINGCONN.

PQESCAPEBYTEACONN

SQL 명령 내에서 사용하기 위해 이진 데이터를 EscapesBYTEA. 와 마찬가지로PQESCAPESTRINGCONN, 이것은입니다

부호없는 char *pqescapebyteaconn (pgconn *conn,

일부로 사용하면 특정 바이트 값을 피해야합니다.BYTEA문자 그대로SQL진술.PQESCAPEBYTEACONN탈출섹션 8.4

theFrom매개 변수 포인트from_length매개 변수to_length매개 변수 포인트

PQESCAPEBYTEACONN탈출 한 버전의 반환From메모리의 파라미터 바이너리 스트링malloc ().pqfreemem ()결과가 아니오 인 경우PostgreSQL문자열 리터럴 파서,BYTEA입력 함수. 에이PostgreSQL문자열 리터럴은 아닙니다

오류가 발생하면 널 포인터가 반환되고 적합합니다.conn개체. 현재 유일한 것입니다

PQESCAPEBYTEA

PQESCAPEBYTEAisPQESCAPEBYTEACONN.

부호없는 char *pqescapebytea (const unsigned char *from,

유일한 차이점PQESCAPEBYTEACONNPQESCAPEBYTEAapgconn매개 변수. 때문에PQESCAPEBYTEAcanPostgreSQL연결 at"무대 뒤에서"). 그것잘못을 줄 수 있습니다다중 사용 프로그램에 사용되는 경우PQESCAPEBYTEACONN그러한 경우).

PQUNESCAPEBYTEA

이진 데이터의 문자열 표현을 변환합니다PQESCAPEBYTEA. 이것은 때 필요합니다BYTEA텍스트의 데이터

부호없는 char *pqunescapebytea (const unsigned char *from, size_t *to_length);

theFrom매개 변수 포인트pqgetValueA에 적용되는 시점BYTEA열.PQUNESCAPEBYTEA이 문자열을 변환합니다malloc ()또는null오류가 발생하여 크기를 넣습니다to_length. 그만큼PQFREEMEM더 이상 없을 때

이 변환은 정확히 역수가 아닙니다PQESCAPEBYTEA"탈출"|pqgetValue. 특히 이것은 의미합니다pgconn매개 변수.