Provided by: libpqtypes-dev_1.5.1-2_amd64 bug

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)