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

30.3.

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

30.3.1. 주요 기능

PQEXEC

서버에 명령을 제출하고

스포츠 토토 *pqexec (pgconn *conn, const char *command);

반환 a스포츠 토토포인터pgres_fatal_error결과. 사용PQERRORMESSAGE더 많은 정보를 얻으려면

여러 SQL 명령을 포함 할 수 있습니다 (분리PQEXEC통화가 처리됩니다시작/커밋명령스포츠 토토구조는 결과 만 설명합니다스포츠 토토

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

resultformat

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

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

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

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

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

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

pqprepare

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

스포츠 토토 *pqprepare (pgconn *conn,

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

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

withPQEXEC, the스포츠 토토내용이 서버 측 성공을 나타내는 객체 또는PQERRORMESSAGE더 많은 정보를 얻으려면

사용하기위한 준비된 진술pqExecpreparedPostgreSQL : 문서 : 8.3 : 스포츠 토토 사이트진술. 또한 없지만libpq준비된 삭제를위한 함수딜 로이징명령문을 사용할 수 있습니다

pqExecprepared

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

스포츠 토토 *pqexecprepared (pgconn *conn,

pqExecpreparedpqexecparams그러나pqExecprepared가 지원됩니다

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

pqdescribeprepared

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

스포츠 토토 *pqdescribeprepared (pgconn *conn, const char *stmtname);

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

stmtnamecan be""또는 이름이없는 것을 참조하기 위해 null스포츠 토토상태pgres_command_ok반환됩니다. 그만큼pqnparamsandPQPARAMTYPE적용 할 수 있습니다스포츠 토토얻기 위해pqnfields, pqfname, pqftype등에 대한 정보를 제공합니다

pqdescribePortal

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

스포츠 토토 *pqdescribePortal (pgconn *conn, const char *portalname);

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

PortalNamecan be""또는 널 참조스포츠 토토상태pgres_command_ok반환됩니다. 그만큼pqnfields, 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_tuples_ok그런 다음 함수select0 행을 검색하는 명령은 여전히 ​​표시됩니다pgres_tuples_ok. pgres_command_ok는 할 수있는 명령입니다삽입, 업데이트등). 의 응답pgres_empty_query

상태의 결과pgres_nonfatal_error절대 반환되지 않습니다PQEXEC또는 기타섹션 30.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(오류 메시지에서) 또는경고, 통지, 디버그, 정보또는log(통지 메시지) 또는 a

PG_DIAG_SQLSTATE

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

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

a를 해제합니다스포츠 토토. 모든 명령 결과가 있어야합니다PQCLEAR언제

void pqclear (스포츠 토토 *res);

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

pqmakeemptypy스포츠 토토

빈 건설스포츠 토토주어진과 객체

스포츠 토토 *pqmakeemptypypy스포츠 토토 (pgconn *conn, execstatustype 상태);

이것은libpq's스포츠 토토개체. 이것connnull이 아니고상태오류, 전류를 나타냅니다스포츠 토토. 참고PQCLEAR결국스포츠 토토반환libpq자체.

30.3.2. 쿼리 결과 검색

이 기능은 a에서 정보를 추출하는 데 사용됩니다.스포츠 토토apgres_tuples_ok). 그들은 또한 될 수 있습니다

pqntuples

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

int pqntuples (const 스포츠 토토 *res);
pqnfields

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

int pqnfields (const 스포츠 토토 *res);
pqfname

주어진과 관련된 열 이름을 반환합니다스포츠 토토핸들이 전달되었습니다PQCLEAR.

char *pqfname (const 스포츠 토토 *res,

null열이면 반환됩니다

pqfnumber

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

int pqfnumber (const 스포츠 토토 *res,

30991_31060

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

FOO로 1, 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정확히 결정합니다

유형OID및 상수Invalidoidlibpq헤더 파일. 둘 다 정수 유형이 될 것입니다.

pqftablecol

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

int pqftablecol (const 스포츠 토토 *res,

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

pqfformat

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

int pqfformat (const 스포츠 토토 *res,

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

pqftype

지정된 열과 관련된 데이터 유형을 반환합니다

OID PQFTYPE (const 스포츠 토토 *res,

시스템 테이블을 쿼리 할 수 ​​있습니다PG_TYPE이름과 속성을 얻습니다OID32238_32300SRC/포함/카탈로그/PG_TYPE.H

pqfmod

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

int pqfmod (const 스포츠 토토 *res,

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

pqfsize

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

int pqfsize (const 스포츠 토토 *res,

pqfsize반환합니다

pqbinaryTuples

반환 1 인 경우 1스포츠 토토텍스트 데이터가 포함 된 경우 이진 데이터와 0이 포함됩니다.

int pqbinaryTuples (const 스포츠 토토 *res);

이 함수는 더 이상 사용되지 않습니다 (사용을 제외하고COPY)스포츠 토토일부에는 텍스트 데이터를 포함합니다pqfformat선호됩니다.pqbinaryTuples모두 1 명인 경우에만 반환합니다

pqgetValue

a의 단일 필드 값을 반환합니다.스포츠 토토. 행과 열스포츠 토토핸들이 전달되었습니다PQCLEAR.

char *pqgetValue (const 스포츠 토토 *res,

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

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

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

PQGETISNULL

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

int pqgetisnull (const 스포츠 토토 *res,

이 함수는 필드가 null 인 경우 1이고 0이면 0을 반환합니다.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쿼리 결과를 인쇄하려면

30.3.3. 결과 정보 검색

이 함수는에서 정보를 추출하는 데 사용됩니다.스포츠 토토그렇지 않은 개체select결과.

pqcmdstatus

SQL 명령에서 명령 상태 태그를 반환합니다스포츠 토토.

char *pqcmdstatus (스포츠 토토 *res);

일반적으로 이것은 명령의 이름 일뿐입니다.스포츠 토토핸들이 전달되었습니다PQCLEAR.

pqcmdtuples

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

char *pqcmdtuples (스포츠 토토 *res);

이 함수는 숫자를 포함하는 문자열을 반환합니다SQL스포츠 토토. 이 기능은 할 수 있습니다삽입, 업데이트, 삭제, 움직임, Fetch또는COPY성명서 또는 anexecute가 포함 된 준비된 쿼리의삽입, 업데이트또는삭제진술. 를 생성 한 명령이 있다면스포츠 토토다른 것이 었습니다.pqcmdtuples반환합니다스포츠 토토핸들이 전달되었습니다PQCLEAR.

pqoidvalue

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

OID pqoidValue (const 스포츠 토토 *res);
pqoidstatus

삽입 된 행의 OID가있는 문자열을 반환합니다.SQL명령은삽입정확히 하나를 삽입했습니다execute준비삽입. (문자열은0삽입정확히 하나의 행을 삽입하지 않았거나 대상 테이블이삽입, 빈 문자열을 반환합니다.

char *pqoidstatus (const 스포츠 토토 *res);

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

30.3.4. 에스케이프 끈

PQESCAPESTRINGCONN탈출 aPQESCAPESTRINGCONN이 작업을 수행합니다.

팁 :적절한 일을하는 것이 특히 중요합니다"SQL원치 않는 SQL 명령이있는 공격

탈출 할 필요가 없거나 맞지 않습니다.pqexecparams또는 형제

SIZE_T PQESCAPESTRINGCONN (PGCONN *CONN,

PQESCAPESTRINGCONNFrom문자열to버퍼, 스페셜을 탈출합니다PostgreSQL문자 그럴은입니다From첫 번째 문자를 가리 킵니다길이매개 변수는 바이트 수를 제공합니다길이. (만약에길이바이트가 처리 됨,PQESCAPESTRINGCONN0에서 멈 춥니 다. 그만큼Strncpy.) to길이,toandFrom문자열 중첩.

인 경우오류매개 변수는 아닙니다*오류는 0으로 설정되었습니다conn객체, 여부오류is null.

PQESCAPESTRINGCONN반환to

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

PQESCAPESTRING나이가 많고PQESCAPESTRINGCONN; 차이점은 그것입니다conn또는오류매개 변수. 이 때문에, 그것은 할 수 없습니다잘못된 결과를 줄 수 있습니다.

PQESCAPESTRING를 사용할 수 있습니다PostgreSQLa"무대 뒤에서"). 다른PQESCAPESTRINGCONN.

30.3.5. 이진 문자열 도피

PQESCAPEBYTEACONN

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

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

특정 바이트 값필수탈출됩니다 (그러나 모두can탈출) A의 일부로 사용될 때BYTEA문자 그대로SQL진술. 일반적으로 탈출') 및 백 슬래시 (\) 문자는 특별한 대안이 있습니다섹션 8.4더 많은 것PQESCAPEBYTEACONN이를 수행합니다

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

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

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

PQESCAPEBYTEA

PQESCAPEBYTEAisPQESCAPEBYTEACONN.

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

유일한 차이점PQESCAPEBYTEACONNPQESCAPEBYTEAapgconn매개 변수. 때문에. 또한 반환 할 방법이 없습니다

PQESCAPEBYTEA할 수 있습니다PostgreSQL한 번에 연결 (이 경우 무엇을 찾을 수 있습니다."뒤에). 다른 맥락에서 그것은 보안입니다PQESCAPEBYTEACONN.

PQUNESCAPEBYTEA

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

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

theFrom매개 변수 포인트pqgetValueA에 적용되는 시점BYTEA열.PQUNESCAPEBYTEA이 문자열을 변환합니다malloc ()또는 널 오류가 발생하여 넣습니다to_length. 결과는 해제되어야합니다PQFREEMEM언제

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

PQFREEMEM

메모리에 의해 할당 된 메모리가libpq.

void pqfreemem (void *ptr);

메모리에 의해 할당 된 메모리가libpq, 특히PQESCAPEBYTEACONN, PQESCAPEBYTEA, PQUNESCAPEBYTEApqnotifies. 특히 그렇습니다free (), Microsoft Windows에서 사용하십시오.free ().