Um cursor é uma forma de percorrer um conjunto de resultados, geralmente retornados através de um comando select.
Um cursor sempre aponta para uma linha dentro do conjunto de dados retornados e, com o auxilio da libpq, podemos além de obter os valores, obter também informações sobre colunas, o que pode ser útil em alguns casos.
Uma outra vantagem da utilização de cursores é a redução da quantidade de memória exigida pelo programa que executou o select. Imagine uma consulta que retorne milhões de registros, isso exigiria uma enorme quantidade de memória alocada para armazenar o resultado da consulta. Além disso, geralmente estaremos trabalhando através de uma rede e a quantidade de dados que estará sendo transmitido pela rede será enorme.
Quando usamos a forma tradicional para recuperação de dados, o PostgreSQL obtém todos os dados da consulta e então os transmite pela rede de uma vez. Ao utilizar cursores, apenas uma linha é transmitida de cada vez conforme o cursor avança ou retrocede dentro do conjunto de dados. Isso, porém, pode se tornar um problema quando temos um conjunto de dados muito grande.
[4] Comentário enviado por rjesus em 13/03/2007 - 11:20h
Olá, sou novo no linux, utilizoo o SUSE versão 10.1, tentei executar o exemplo que foi passado acima e obtive o seguinte resultado :
suse:/usr/include/pgsql # gcc $(pkg-config --libs --cflags gtk+-2.0) -g teste1.c
/tmp/ccc0dzwL.o: In function `main':
/usr/include/pgsql/teste1.c:13: undefined reference to `PQconnectdb'
/usr/include/pgsql/teste1.c:15: undefined reference to `PQstatus'
/usr/include/pgsql/teste1.c:28: undefined reference to `PQexec'
/usr/include/pgsql/teste1.c:21: undefined reference to `PQerrorMessage'
/usr/include/pgsql/teste1.c:22: undefined reference to `PQfinish'
/usr/include/pgsql/teste1.c:36: undefined reference to `PQresultStatus'
/usr/include/pgsql/teste1.c:42: undefined reference to `PQresultErrorMessage'
/usr/include/pgsql/teste1.c:45: undefined reference to `PQcmdTuples'
/usr/include/pgsql/teste1.c:53: undefined reference to `PQclear'
/usr/include/pgsql/teste1.c:59: undefined reference to `PQfinish'
collect2: ld returned 1 exit status
Alguêm poderia me ajudar ???
Obigado!
[5] Comentário enviado por poleto em 13/03/2007 - 15:04h
Fala rjesus,
Parece que você esqueceu alguns parâmetros para o gcc na hora de executar.
Dá uma olhada neste artigo que tem os detalhes necessários para compilar programas com suporte ao PostgreSQL: