OCIBindByPos

Prototypes

sword OCIBindByPos(OCIStmt *stmtp, OCIBind **bindp, OCIError *errhp, ub4 position, dvoid *valuep, sb4 value_sz, ub2 dty, dvoid *indp, ub2 *alenp, ub2 *rcodep, ub4 maxarr_len, ub4 *curelep, ub4 mode);

Description

Lie le paramètre de numéro position au handle de l'ordre Sql stmtp selon le mode mode. La numérotation des paramètres commence à 1.

Le type natif du paramètre est donné par dty.

La taille maximale d'une valeur du paramètre est donnée par value_sz.

La valeur du paramètre est transmise par l'adresse valuep et son indicateur ou sa taille par indp.

La valeur du paramètre lu est renvoyée par alenp.

La taille des tableaux des paramètres est donnée par maxarr_len.

Le lien du paramètre est identifié par le handle bindp.

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

Les valeurs possibles de dty sont les suivantes :

Les valeurs possibles de indp sont les suivantes :

Les valeurs possibles de mode sont les suivantes :

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

Exemple

#include <ociap.h>

static OCISvcCtx *hConnexion;
static OCIError *hErreur;
static OCIBind *hE;
static long E;
static ub2 IndicateurE;
static ub2 TailleE;
static OCIBind *hTableE;
static long TableE[256];
static ub2 IndicateurTableE[256];
static ub2 TailleTableE[256];
static OCIBind *hC;
static char C[20];
static ub2 IndicateurC;
static ub2 TailleC;
static OCIBind *hTableC;
static char TableC[256][20];
static ub2 IndicateurTableC[256];
static ub2 TailleTableC[256];

...
/* Parametre unitaire. */
if (OCIBindByPos(hOrdreSql, &hE, hErreur, 1, (dvoid *)&E, sizeof(long), SQLT_NUM, (dvoid *)&IndicateurE, sizeof(long), &IndicateurE, &TailleE, 1, OCIDEFAULT)!=OCI_SUCCESS) ...
/* Parametre en tableau. */
if (OCIBindByPos(hOrdreSql, &hTableE, hErreur, 2, (dvoid *)TableE, sizeof(long), SQLT_NUM, (dvoid *)IndicateurTableE, sizeof(long)*256, IndicateurTableE, TailleTableE, 256, OCIDEFAULT)!=OCI_SUCCESS) ... /* Parametre unitaire. */
if (OCIBindByPos(hOrdreSql, &hC, hErreur, 1, (dvoid *)C, sizeof(char)*20, SQLT_STR, (dvoid *)&IndicateurC, sizeof(char)*20, &IndicateurC, &TailleC, 1, OCIDEFAULT)!=OCI_SUCCESS) ...
/* Parametre en tableau. */
if (OCIBindByPos(hOrdreSql, &hTableC, hErreur, 2, (dvoid *)TableC, sizeof(char)*20, SQLT_STR, (dvoid *)IndicateurTableC, sizeof(char)*20*256, IndicateurTableC, TailleTailleC, 256, OCIDEFAULT)!=OCI_SUCCESS) ...

Voir aussi

OCIDefineByPos pour lier un résultat d'une requête. OCIHandleFree pour libérer un ordre Sql.