GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages
PQgetf(3) libpqtypes Manual PQgetf(3)

PQgetf - Gets one or more values from a PGresult in a scanf fashion.

#include <libpqtypes.h>

int PQgetf(const PGresult *res, int tup_num, const char *format, ...);
int PQgetvf(const PGresult *res, int tup_num, const char *format, va_list ap);

The PQgetf() and PQgetvf() functions get one or more field values from a PGresult using a scanf style interface. The tup_num argument indicates which tuple to read values from; values can only be read from one tuple at a time.

The format argument is a data type specifier string indicating the values to retrieve, like %int4 or #timestamp. Any number of fields, in any order, can be retrieved in a single call. Each data type specifier has a cooresponding field_num, type-args, [...] contained within the function´s variable argument list. The field_num either indicates tuple field number or tuple field name, depending on whether the data type in format used a ´%´ or ´#´ specifer mark (`man pqt-specs(3)´). The type-args can be one or more arguments required by the specific data type: for example, "%int4" would require a pointer to a PGint4. All built-in PostgreSQL data types require a single pointer value.

On success, a non-zero value is returned. On error, zero is returned and PQgeterror(3) will contain an error message.

If the retrieval of any field fails, the get operation is aborted and function will fail. Eventhough some fields may have succeeded prior to the failure, their values should not be trusted. Instead, make another PQgetf() call. Getting an array or a composite can lead to memory leaks when getf fails. This is because these types allocate a PGresult object that must be cleared. To avoid leaks, it is recommended to perform cleanup even if getf fails, retrieve arrays and composites by themselves or make them the last field in a getf call.

The example uses the libpq PQexec function to execute a query and then uses PQgetf() to retrieve field values. It is important to note that libpqtypes execution functions, like PQparamExec(3), do not need to generate the PGresult provided to PQgetf().
int success;
PGint4 i4;
PGtext text;
PGbytea bytea;
PGpoint pt;
PGresult *res = PQexec(conn, "SELECT i,t,b,p FROM tbl");
/* Get some field values from the result (order doesn´t matter) */
success = PQgetf(res,
	0,            /* get field values from tuple 0 */
	"%int4 #text %bytea %point",
	              /* type format specifiers (get text by name ´#´) */
	0,   &i4,     /* get an int4 from field num 0 */
	"t", &text,   /* get a text from field name "t" */
	2,   &bytea,  /* get a bytea from field num 2 */
	3,   &pt);    /* get a point from field num 3 */
/* Output an error message using PQgeterror(3). */
if(!success)
	fprintf(stderr, "*ERROR: %s\n", PQgeterror());
/* Output the values, do this before PQclear() */
else
	printf("int4=%d, text=%s, bytea=%d bytes, point=(%f,%f)\n",
		i4, text, bytea.len, pt.x, pt.y);
PQclear(res);

A contribution of eSilo, LLC. for the PostgreSQL Database Management System. Written by Andrew Chernow and Merlin Moncure.

Report bugs to <libpqtypes@esilo.com>.

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.

pqt-specs(3), PQgeterror(3)
2011 libpqtypes

Search for    or go to Top of page |  Section 3 |  Main Index

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with ManDoc.