SQLRETURN SQLFetch(SQLHSTMT StatementHandle);
Si les résultats sont liés par tableau, alors un paquet d'enregistrements est lu dont la taille est limitée par la taille des tableaux. La taille utilisée est retrouvée par l'appel à SQLGetStmtAttr.
Le résultat est SQL_SUCCESS en cas de succès et tant qu'il reste des enregistrements.
#include <windows.h>
#include <sql.h>
#include <sqlext.h>
#include <sqltypes.h>
static SQLHANDLE hOrdreSql;
static long E;
static SQLINTEGER IndicateurE;
static char TableC[256][20];
static SQLINTEGER IndicateurTableC[256];
static SQLINTEGER NbEnregistrements;
...
/* Resultat unitaire. */
if (SQLBindCol(hOrdreSql, 1, SQL_C_SLONG, (SQLPOINTER)&E, sizeof(long), &IndicateurE)!=SQL_SUCCESS)
{
...
}
...
if (SQLExecDirect(hOrdreSql, "select empno from emp where ename='SCOTT';")!=SQL_SUCCESS)
{
...
}
...
if (SQLFetch(hOrdreSql)!=SQL_SUCCESS)
{
...
}
...
/* Resultat en tableau. */
if (SQLBindCol(hOrdreSql, 1, SQL_C_CHAR, (SQLPOINTER)TableC, sizeof(char)*20*256, TableIndicateurC)!=SQL_SUCCESS)
{
...
}
...
if (SQLSetStmtAttr(hConnexion, SQL_ATTR_ROW_ARRAY_SIZE, (SQLPOINTER)256, SQL_NTS)!=SQL_SUCCESS)
{
...
}
...
if (SQLGetStmtAttr(hConnexion, SQL_ATTR_ROWS_FETCHED_PTR, (SQLPOINTEUR)&NbEnregistrements, sizeof(SQLINTEGER), NULL)!=SQL_SUCCESS)
{
...
}
...
if (SQLExecDirect(hOrdreSql, "select ename from emp where deptno=10;")!=SQL_SUCCESS)
{
...
}
...
if (SQLFetch(hOrdreSql)!=SQL_SUCCESS)
{
...
}
...