DragonFly On-Line Manual Pages
PQexecf(3) libpqtypes Manual PQexecf(3)
NAME
PQexecf - Prepares parameters and executes a command.
SYNOPSIS
#include <libpqtypes.h>
PGresult *PQexecf(const PGconn *conn, const char *cmd, ...);
PGresult *PQexecvf(const PGconn *conn, const char *cmd, va_list ap);
int PQsendf(const PGconn *conn, const char *cmd, ...);
int PQsendvf(const PGconn *conn, const char *cmd, va_list ap);
DESCRIPTION
The PQexecf() function executes a command that uses libpqtypes type
specifiers instead of $1, $2, etc... syntax. The idea is to combine
PQputvf() and PQparamExec() into a single call. The variable argument
list must match the type specs listed within the cmd. The type
specifiers should be placed where one would normally place $1, $2,
etc...
The PQexecvf() function is identical to PQexecf() except it takes a
va_list.
The PQsendf() and PQsendvf() functions are identical to PQexecf() and
PQexecvf() except they are asynchronous versions, meaning an additional
call, PQgetResult, must be issued to get the PGresult object. For more
information, see the PostgreSQL Documentation: specifically the
"Asynchronous Command Processing" section under "Client Interfaces |
libpq - C library".
A prepared type spec "@name" can be used with these functions, granted
that PQspecPrepare() was called with a non-zero value for the is_stmt
argument. These functions needs an actual SQL statement to execute.
RETURN VALUE
PQexecf and PQexecvf return NULL on error and a valid PGresult on
success. PQsendf and PQsendvf return zero on error and a non-zero
value on success. On error, use PQgeterror(3) to obtain an error
message.
EXAMPLES
Using PQexecf
The example uses PQexecf function to execute a query.
/* The PQexecf call is shorthand for:
*
* PGparam *param = PQparamCreate(conn);
* PQputf(param, "%int4 %int4", 1, 1);
* res = PQparamExec(conn, param, "SELECT $1 * $2", 1);
* PQparamClear(param);
*
* As you may notice, PQexecf makes life much simpler.
*/
PGresult *res = PQexecf(conn, "SELECT %int4 * %int4", 1, 1);
if(!res)
fprintf(stderr, "PQexecf failed: %s", PQgeterror());
else
PQclear(res);
/* A bit more common, this puts an int4 and a text into a generated
* PGparam and then executes 'myfunc($1, $2)'
*/
res = PQexecf(conn, "SELECT * FROM myfunc(%int4, %text)", 2, "abc");
/* Prepared type spec example. To use with execf, the final "is_stmt"
* argument must be set to a non-zero value!
*/
PQspecPrepare(conn, "account_insert", "INSERT INTO account VALUES "
"(%int8, %text, %int4)", 1);
PGint8 acc_id = 78236;
PGtext acc_name = "ABC Coders, LLC.";
PGint4 acc_biz = ACC_BIZ_TECHNOLOGY;
PQexecf(conn, "@account_insert", acc_id, acc_name, acc_biz);
AUTHOR
A contribution of eSilo, LLC. for the PostgreSQL Database Management
System. Written by Andrew Chernow and Merlin Moncure.
REPORTING BUGS
Report bugs to <libpqtypes@esilo.com>.
COPYRIGHT
Copyright (c) 2011 eSilo, LLC. All rights reserved.
This is free software; see the source for copying conditions. There is
NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE.
SEE ALSO
PQgeterror(3), PQputvf(3), PQparamExec(3)
libpqtypes 2011 PQexecf(3)