PQexecPreparedBatch

功能描述

发送一个请求来用给定的批量参数执行一个预备语句,并且等待结果。

原型

PGresult* PQexecPreparedBatch(PGconn* conn, 
                              const char* stmtName, 
                              int nParams,
                              int nBatchCount,
                              const char* const* paramValues,
                              const int* paramLengths,
                              const int* paramFormats,
                              int resultFormat);

参数

表 1 PQexecPreparedBatch参数

关键字

参数说明

conn

连接句柄。

stmtName

stmt名称,可以用""或者NULL来引用未命名语句,否则它必须是一个现有预备语句的名字。

nParams

参数个数。

nBatchCount

批量数。

paramValues

参数的实际值。

paramLengths

参数的实际数据长度。

paramFormats

参数的格式(文本或二进制)。

resultFormat

结果的格式(文本或二进制)。

返回值

PGresult类型指针。

PQfname

功能描述

返回与给定列号相关联的列名。列号从0开始。调用者不应该直接释放该结果。它将在相关的PGresult句柄被传递给PQclear之后被释放。

原型

char *PQfname(const PGresult *res,
              int column_number);

参数

表 1 PQfname参数

关键字

参数说明

res

操作结果句柄。

column_number

列数。

返回值

char类型指针。

示例

参见:示例

 

PQgetvalue

功能描述

返回一个PGresult的一行的单一域值。行和列号从 0 开始。调用者不应该直接释放该结果。它将在相关的PGresult句柄被传递给PQclear之后被释放。

原型

char *PQgetvalue(const PGresult *res,
                 int row_number,
                 int column_number);

参数

表 1 PQgetvalue参数

关键字

参数说明

res

操作结果句柄。

row_number

行数。

column_number

列数。

返回值

对于文本格式的数据,PQgetvalue返回的值是该域值的一种空值结束的字符串表示。

对于二进制格式的数据,该值是由该数据类型的typsend和typreceive函数决定的二进制表示。

如果该域值为空,则返回一个空串。

示例

PQnfields

功能描述

返回查询结果中每一行的列(域)数。

原型

int PQnfields(const PGresult *res);

参数

表 1 PQnfields参数

关键字

参数说明

res

操作结果句柄。

返回值

int类型数字。

示例

参见:示例

 

PQntuples

功能描述

返回查询结果中的行(元组)数。因为它返回一个整数结果,在 32 位操作系统上大型的结果集可能使返回值溢出。

原型

int PQntuples(const PGresult *res);

参数

表 1 PQntuples参数

关键字

参数说明

res

操作结果句柄。

返回值

int类型数字。

示例

参见:示例

 

PQprepare

功能描述

用给定的参数提交请求,创建一个预备语句,然后等待结束。

原型

PGresult *PQprepare(PGconn *conn,
                    const char *stmtName,
                    const char *query,
                    int nParams,
                    const Oid *paramTypes);

参数

表 1 PQprepare参数

关键字

参数说明

conn

指向包含链接的对象指针。

stmtName

需要执行的stmt名称。

query

需要执行的查询字符串。

nParams

参数个数。

paramTypes

声明参数类型的数组。

返回值

PGresult:包含查询结果的对象指针。

注意事项

  • PQprepare创建一个为PQexecPrepared执行用的预备语句,本特性支持命令的重复执行,不需要每次都进行解析和规划。PQprepare仅在协议3.0及以后的连接中支持,使用协议2.0时,PQprepare将失败。
  • 该函数从查询字符串创建一个名为stmtName的预备语句,该查询字符串必须包含一个SQL命令。stmtName可以是"“来创建一个未命名的语句,在这种情况下,任何预先存在的未命名的语句都将被自动替换;否则,如果在当前会话中已经定义了语句名称,则这是一个错误。如果使用了任何参数,那么在查询中将它们称为$1,$2等。nParams是在paramTypes[]数组中预先指定类型的参数的数量。(当nParams为0时,数组指针可以为NULL)paramTypes[]通过OID指定要分配给参数符号的数据类型。如果paramTypes为NULL ,或者数组中的任何特定元素为零,服务器将按照对非类型化字面字符串的相同方式为参数符号分配数据类型。另外,查询可以使用数字高于nParams的参数符号;还将推断这些符号的数据类型。

 须知:
通过执行SQLPREPARE语句,还可以创建与PQexecPrepared一起使用的预备语句。此外,虽然没有用于删除预备语句的libpq函数,但是SQL DEALLOCATE语句可用于此目的。

示例

请参见示例章节。

PQresultStatus

功能描述

返回命令的结果状态。

原型

ExecStatusType PQresultStatus(const PGresult *res);

参数

表 1 PQresultStatus参数

关键字

参数说明

res

包含查询结果的对象指针。

返回值

PQresultStatus:命令执行结果的枚举,包括:

PQresultStatus可以返回下面数值之一:
PGRES_EMPTY_QUERY
发送给服务器的字串是空的。

PGRES_COMMAND_OK
成功完成一个不返回数据的命令。

PGRES_TUPLES_OK
成功执行一个返回数据的查询(比如SELECT或者SHOW)。

PGRES_COPY_OUT
(从服务器)Copy Out (拷贝出)数据传输开始。

PGRES_COPY_IN
Copy In(拷贝入)(到服务器)数据传输开始。

PGRES_BAD_RESPONSE
服务器的响应无法理解。

PGRES_NONFATAL_ERROR
发生了一个非致命错误(通知或者警告)。

PGRES_FATAL_ERROR
发生了一个致命错误。

PGRES_COPY_BOTH
拷贝入/出(到和从服务器)数据传输开始。这个特性当前只用于流复制, 所以这个状态不会在普通应用中发生。

PGRES_SINGLE_TUPLE
PGresult包含一个来自当前命令的结果元组。 这个状态只在查询选择了单行模式时发生

注意事项

  • 请注意,恰好检索到零行的SELECT命令仍然显示PGRES_TUPLES_OK。PGRES_COMMAND_OK用于永远不能返回行的命令(插入或更新,不带返回子句等)。PGRES_EMPTY_QUERY响应可能表明客户端软件存在bug。

  • 状态为PGRES_NONFATAL_ERROR的结果永远不会由PQexec或其他查询执行函数直接返回,此类结果将传递给通知处理程序。

示例

请参见示例章节。

 

Logo

鲲鹏昇腾开发者社区是面向全社会开放的“联接全球计算开发者,聚合华为+生态”的社区,内容涵盖鲲鹏、昇腾资源,帮助开发者快速获取所需的知识、经验、软件、工具、算力,支撑开发者易学、好用、成功,成为核心开发者。

更多推荐