
# 处理结果集
libpq提供[PQnfields](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0216.html)、[PQntuples](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0217.html)、[PQfname](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0218.html)等函数来帮助用户对执行SELECT查询后的结果进行适当的解析和处理。主要步骤如下：
1. 判断执行结果状态；
2. 获取结果集行数和列数；
3. 遍历并提取数据；
4. 释放PGresult对象（必须执行）。
示例如下（完整示例请参考[数据库建连、执行SQL并返回结果](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0180.html)）：
```
/* 打印属性名称 */
nFields = PQnfields(res);
for (i = 0; i < nFields; i++)
    printf("%-15s", PQfname(res, i));
printf("\n\n");
/* 打印行 */
for (i = 0; i < PQntuples(res); i++)
{
    for (j = 0; j < nFields; j++)
    printf("%-15s", PQgetvalue(res, i, j));
    printf("\n");
}
/* 释放结果对象的内存以避免内存泄漏 */    
PQclear(res);
```
