Postgresql 9.1.24 문서 | ||||
---|---|---|---|---|
PostgreSQL : 문서 : 9.1 : 토토 결과 상태 기능 | up | 31 장.libpq-C 라이브러리 | PostgreSQL : 문서 : 9.1 : 비동기 토토 핫 처리 |
데이터베이스 서버에 대한 연결이 성공적으로 성공하면
명령 문자열에는 여러 SQL 명령이 포함될 수 있습니다PQEXEC
호출은 a시작/커밋명령토토 커뮤니티구조는 결과 만 설명합니다토토 커뮤니티
pqexecparams
서버에 명령을 제출하고
토토 커뮤니티 *pqexecparams (pgconn *conn,
pqexecparams
PQEXEC
그러나 제공합니다pqexecparams
is
함수 인수는 다음과 같습니다.
명령을 보낼 연결 객체입니다
실행될 SQL 명령 문자열. 만약에$1, $2등
제공되는 매개 변수 수; 그것은입니다Paramtypes [], Paramvalues [], Paramlengths []및FARAMFORMATS []. (배열null언제nparamsis Zero.)
지정할 데이터 유형을 OID로 지정합니다Paramtypesisnull또는 특정 요소
매개 변수의 실제 값을 지정합니다. 에이
실제 데이터 길이를 지정합니다
매개 변수가 텍스트인지 지정합니다 (put a
이진 형식으로 전달되는 값에는 지식이 필요합니다숫자값은 지식이 필요합니다src/backend/utils/adt/numeric.c :: numeric_send ()및src/backend/utils/adt/numeric.c :: numeric_recv ().
텍스트 형식으로 결과를 얻으려면 0을 지정하고,
의 주요 장점pqexecparams
OverPQEXEC
매개 변수 값이 될 수 있습니다
와 달리PQEXEC
, pqexecparams
최대 하나의 SQL 명령을 허용합니다
팁 :OIDS를 통해 매개 변수 유형을 지정합니다
선택 *에서 mytable에서 x = $ 1 :: bigint;이 힘 매개 변수$1bigint14719_14785x. 매개 변수 유형 결정 강제,
pqprepare
준비한 문을 작성하라는 요청을 제출합니다
토토 커뮤니티 *pqprepare (pgconn *conn,
pqprepare
생성 apqExecprepared
. 이 기능은 허용합니다pqprepare
is
함수는 이름이 지정된 명령문을 만듭니다stmtname에서쿼리Stringstmtname할 수 있습니다""이름이없는 것을 만들려면$1,
$2등nparams의 매개 변수 수입니다Paramtypes []. (배열 포인터가 될 수 있습니다null언제nparamsis Zero.)Paramtypes []OID에 의해 데이터를 지정합니다Paramtypesisnull또는nparams; 데이터 유형이 추론됩니다pqdescribeprepared
찾을 수있는 수단
withPQEXEC
,토토 커뮤니티내용이 서버 측 성공을 나타내는 객체 또는PQERRORMESSAGE
더 많은 정보를 얻으려면
사용하기위한 준비된 진술pqExecprepared
준비진술. 또한 없지만libpq준비된 삭제를위한 함수딜 로이징그 목적으로 문을 사용할 수 있습니다.
pqExecprepared
준비한 문을 실행하라는 요청을 보냅니다
토토 커뮤니티 *pqexecprepared (pgconn *conn,
pqExecprepared
pqexecparams
pqExecprepared
지원됩니다
매개 변수는 동일합니다pqexecparams
Paramtypes []매개 변수
pqdescribeprepared
에 대한 정보를 얻기위한 요청을 제출합니다
토토 커뮤니티 *pqdescribeprepared (pgconn *conn, const char *stmtname);
pqdescribeprepared
응용 프로그램이 a에 대한 정보를 얻을 수 있도록 허용합니다pqdescribeprepared
만 지원됩니다
stmtname할 수 있습니다""또는nullTO토토 커뮤니티상태pgres_command_ok반환됩니다.pqnparams
및PQPARAMTYPE
적용 할 수 있습니다토토 커뮤니티얻기 위해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);
pqresultstatus
can
서버로 전송 된 문자열이 비어있었습니다.
반환하는 명령의 성공적인 완료 번호
명령의 성공적인 완료select또는show).
(서버에서) 데이터 전송을 복사합니다
(서버로) 데이터 전송이 시작되었습니다.
서버의 응답은 이해되지 않았습니다.
비 치명적 오류 (통지 또는 경고)
치명적인 오류가 발생했습니다.
복사/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
또는pqgetresult
Call,PQERRORMESSAGE
(연결 중)PQRESULTERRORMESSAGE
(결과에서).토토 커뮤니티의지PQRESULTERRORMESSAGE
원할 때토토 커뮤니티; 사용PQERRORMESSAGE
알고 싶을 때
pqresulterrorfield
오류 보고서의 개별 필드를 반환합니다.
char *pqresultterrorfield (const 토토 커뮤니티 *res, int fieldcode);
FieldCode는 오류 필드입니다null이면 반환됩니다토토 커뮤니티오류 나 경고가 아닙니다토토 커뮤니티핸들이 전달됩니다PQCLEAR
.
다음 필드 코드를 사용할 수 있습니다.
심각도; 필드 내용은오류, 치명적또는panic(오류 메시지에서) 또는경고, 통지, 디버그, info또는log(통지 메시지에서) 또는 a
오류에 대한 sqlstate 코드. sqlstate와이즈 토토 : 문서 : 9.1 : 와이즈 토토 오류 와이즈 토토. 이 분야는 현지화 할 수 없으며 항상입니다
기본 인간 읽을 수있는 오류 메시지
세부 사항 : 선택적 보조 오류 메시지
힌트 : 선택적인 제안에 대해해야 할 일
소수 정수를 포함하는 문자열
이것은와 동일하게 정의됩니다.pg_diag_statement_position필드pg_diag_internal_query필드
내부적으로 생성 된 텍스트의 텍스트
오류가있는 컨텍스트의 표시
소스 코드 위치의 파일 이름
소스 코드 위치의 줄 번호
소스 코드 함수보고의 이름
클라이언트는 표시 형식을 담당합니다
내부적으로 생성 된 오류libpq심각도와 기본이 있습니다
오류 필드는에서만 사용할 수 있습니다.토토 커뮤니티객체, 아님pgconn개체; 없음PQERRORFIELD
기능.
PQCLEAR
토토 커뮤니티. 모든 명령 결과가 있어야합니다PQCLEAR
언제
void pqclear (토토 커뮤니티 *res);
당신은 a를 유지할 수 있습니다.토토 커뮤니티필요한만큼 오랫동안 물체; 가지 않습니다PQCLEAR
. 이 작업을 수행하지 못합니다
이 기능은 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
선호됩니다.pqbinaryTuples
1만큼만 반환합니다
pqgetValue
a의 단일 필드 값을 반환합니다토토 커뮤니티. 행과 열토토 커뮤니티핸들이 전달됩니다PQCLEAR
.
char *pqgetValue (const 토토 커뮤니티 *res,
텍스트 형식의 데이터의 경우pqgetValue
isTypSend
및typreceive
함수. (가치는입니다
필드 값이 있으면 빈 문자열이 반환됩니다.PQGETISNULL
to
포인터가 반환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쿼리 결과를 인쇄하려면
이 기능은에서 다른 정보를 추출하는 데 사용됩니다.토토 커뮤니티개체.
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
그리고 스레드 안전이 아닙니다. 그것pqoidvalue
OID를 반환합니다
char *pqoidstatus (const 토토 커뮤니티 *res);
PQESCAPELITERAL
char *pqescapeliteral (pgconn *conn, const char *str, size_t 길이);
PQESCAPELITERAL
탈출PQESCAPELITERAL
이를 수행합니다
PQESCAPELITERAL
반환str메모리의 매개 변수와 함께 할당malloc ()
. 이 기억은 해제되어야합니다pqfreemem ()
길이. (종료 제로 바이트가있는 경우길이바이트는입니다PQESCAPELITERAL
0에서 멈 춥니 다. 그러므로 행동은 오히려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 ()
결과가 아니오 인 경우길이. (종료 제로 바이트가있는 경우길이바이트는입니다PQESCAPEINDIFIER
0에서 멈 춥니 다.strncpy
.) 리턴 문자열에는 모든 것이 있습니다
on Error,PQESCAPEINDIFIER
반환null그리고 적절한 메시지가 저장됩니다conn개체.
팁 :스트링 리터럴과 마찬가지로 방지합니다
PQESCAPESTRINGCONN
SIZE_T PQESCAPESTRINGCONN (PGCONN *CONN,
PQESCAPESTRINGCONN
끈 리터럴을 탈출합니다.PQESCAPELITERAL
. 같지 않은PQESCAPELITERAL
, 발신자는입니다PQESCAPESTRINGCONN
생성되지 않습니다PostgreSQL문자열 리터럴; 그들From첫 번째 캐릭터를 가리 킵니다길이매개 변수는 수를 제공합니다길이. (종료 제로 바이트가있는 경우길이바이트는입니다PQESCAPESTRINGCONN
0에서 멈 춥니 다.strncpy
.) to적어도 하나를 고정 할 수있는 버퍼를 가리 킵니다.길이, 그렇지 않으면 동작입니다to및From문자열 중첩.
오류매개 변수입니다null,*오류성공시 0이 아닌 0으로 설정되었습니다conn객체, 여부오류isnull.
PQESCAPESTRINGCONN
작성된 바이트 수를 반환합니다to, 종료 0을 포함하지 않습니다
PQescapestring
PQescapestring
isPQESCAPESTRINGCONN
.
SIZE_T PQESCAPESTRING (char *to, const char *from, size_t 길이);
유일한 차이점PQESCAPESTRINGCONN
PQescapestring
취하지 않습니다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
PQESCAPEBYTEA
isPQESCAPEBYTEACONN
.
부호없는 char *pqescapebytea (const unsigned char *from,
유일한 차이점PQESCAPEBYTEACONN
PQESCAPEBYTEA
apgconn매개 변수. 때문에PQESCAPEBYTEA
canPostgreSQL연결 at"무대 뒤에서"). 그것잘못을 줄 수 있습니다다중 사용 프로그램에 사용되는 경우PQESCAPEBYTEACONN
그러한 경우).
PQUNESCAPEBYTEA
이진 데이터의 문자열 표현을 변환합니다PQESCAPEBYTEA
. 이것은 때 필요합니다BYTEA텍스트의 데이터
부호없는 char *pqunescapebytea (const unsigned char *from, size_t *to_length);
theFrom매개 변수 포인트pqgetValue
A에 적용되는 시점BYTEA열.PQUNESCAPEBYTEA
이 문자열을 변환합니다malloc ()
또는null오류가 발생하여 크기를 넣습니다to_length. 그만큼PQFREEMEM
더 이상 없을 때
이 변환은 정확히 역수가 아닙니다PQESCAPEBYTEA
"탈출"|pqgetValue
. 특히 이것은 의미합니다pgconn매개 변수.