VastbaseG100

基于openGauss内核开发的企业级关系型数据库。

Menu

PQsendQuery

功能描述

向服务器提交一个命令而不等待结果。如果查询成功发送则返回 1,否则返回 0。 (此时,可以用PQerrorMessage获取关于失败的信息)。

接口原型

int PQsendQuery(PGconn *conn, const char *query);

参数说明

参数与PQexec接口一致。

返回值

如果查询成功发送则返回 1,否则返回 0。

在成功调用PQsendQuery后,调用PQgetResult 一次或者多次获取结果。直到PQgetResult返回 NULL 指针时 ,命令执行完毕。而在PQgetResult 返回空指针前,命令未结束,此时不能再调用PQsendQuery。

其他

PQexec函数对普通的同步应用里提交命令已经是足够用的了。 但是它却有几个缺陷,而这些缺陷可能对某些用户很重要:

  • PQexec等待命令结束。而应用可能还有其它的工作要做 (比如维护用户界面等),这个时候它可不想阻塞在这里等待响应。

  • 因为客户端应用在等待结果的时候是处于挂起状态的,所以应用很难判断它是否该尝试结束正在进行的命令。 (这个事情可以在一个信号处理器中做,但是没别的方法。)

  • PQexec只能返回一个PGresult结构。 如果提交的命令字符串包含多个SQL命令,除了最后一个 PGresult以外都会被PQexec丢弃。

  • PQexec总是收集命令的整个结果,将其缓存在一个PGresult中。 虽然这为应用简化了错误处理逻辑,但是对于包含多行的结果是不切实际的。

不想受到这些限制的应用可以改用下面的函数,这些函数也是构造PQexec 的函数:PQsendQuery和PQgetResult。 也有PQsendQueryParams,PQsendPrepare, PQsendQueryPrepared,PQsendDescribePrepared 和PQsendDescribePortal,它们可以和PQgetResult 一起使用,分别用于复制PQexecParams,PQprepare, PQexecPrepared,PQdescribePrepared 和PQdescribePortal的功能。