OCIStmtFetch2

Prototypes

sword OCIStmtFetch2(OCIStmt *stmtp, OCIError *errhp, ub4 nrows, ub2 orientation, ub4 scrollOffset, ub4 mode);

Description

Lit l'enregistrement suite à l'exécution de l'ordre Sql associé au handle StatementHandle.

Si les résultats sont liés par tableau, alors un paquet d'enregistrements est lu dont la taille est limitée par nrows.

L'orientation de la lecture est donnée par orientation en tenant compte de l'offset scrollOffset par rapport à la position courante. Voici les valeurs possibles de orientation :

En cas d'erreur, un compte-rendu est associé au handle errhp.

Le résultat est OCI_SUCCESS en cas de succès.

Exemple

#include <ociap.h>

static OCISvcCtx *hConnexion;
static OCIError *hErreur;
static OCIDefine *hTableE;
static long TableE[256];
static ub2 IndicateurTableE[256];
static ub2 TailleTableE[256];
static OCIDefine *hTableC;
static char TableC[256][20];
static ub2 IndicateurTableC[256];
static ub2 TailleTableC[256];
static ub4 NbEnregistrements;
static ub4 Taille;

...
if (OCIDefineByPos(hOrdreSql, &hTableE, hErreur, 1, (dvoid *)TableE, sizeof(long), SQLT_NUM, (dvoid *)IndicateurTableE, IndicateurTableE, TailleTableE, OCIDEFAULT)!=OCI_SUCCESS) ...
if (OCIDefineByPos(hOrdreSql, &hTableC, hErreur, 2, (dvoid *)TableC, sizeof(char)*20, SQLT_STR, (dvoid *)IndicateurTableC, IndicateurTableC, TailleTailleC, OCIDEFAULT)!=OCI_SUCCESS) ...
if (OCIStmtPrepare(hOrdreSql, hErreur, (OraText *)"select empno, ename from emp;", 29, OCI_NTV_SYNTAX, OCI_DEFAULT)!=OCI_SUCCESS) ...
if (OCIStmtExecute(hConnexion, hOrdreSql, hErreur, 256, 0, NULL, NULL, OCI_DEFAULT)) ...
Taille=sizeof(NbEnregistrements);
if (OCIAttrGet(hOrdreSql, OCI_HTYPE_STMT, (dvoid *)&NbEnregistrements, &Taille, OCI_ATTR_ROW_COUNT, hErreur)!=OCI_SUCCESS) ...
if (OCIStmtFetch2(hOrdreSql, hErreur, 256, OCI_FETCH_NEXT, 0, OCI_DEFAULT)) ...
Taille=sizeof(NbEnregistrements);
if (OCIAttrGet(hOrdreSql, OCI_HTYPE_STMT, (dvoid *)&NbEnregistrements, &Taille, OCI_ATTR_ROWS_FETCHED, hErreur)!=OCI_SUCCESS) ...

Voir aussi

OCIAttrSet pour fixer la taille des tableaux des résultats d'un ordre Sql. OCIStmtExecute pour exécuter un ordre Sql. OCIAttrGet pour lire la valeur d'une option de l'ordre Sql.