IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Interfaces de programmation Oracle Discussion :

[OCILIB] Algorithme pour les nulls


Sujet :

Interfaces de programmation Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2009
    Messages : 41
    Par défaut [OCILIB] Algorithme pour les nulls
    Bonjour à tous,

    Une petite question concernant le bind de NULL,

    J'ai un algorithme "générique" qui me permet de réaliser des insert défini comme suit:

    Préparations
    OCI_StatementCreate
    OCI_Prepare
    Divers OCI_Bind*

    Exécutions
    Mise à jour des valeurs
    OCI_Execute

    Jusque là, tout semble normal me direz-vous...

    Y'a t-il une solution pour traiter des insertions de valeurs nulles dans la partie 'Exécutions'? Dois-je refaire dans ce cas des OCI_Bind particuliers?

    D'avance merci.
    Fly.

  2. #2
    Rédacteur
    Avatar de Vincent Rogier
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 373
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 373
    Par défaut
    Salut,

    Il faut utiliser les fonctions suivantes :

    OCI_BindSetNull()
    OCI_BindSetNullAtPos()
    Vincent Rogier.

    Rubrique ORACLE : Accueil - Forum - Tutoriels - FAQ - Livres - Blog

    Vous voulez contribuer à la rubrique Oracle ? Contactez la rubrique !

    OCILIB (C Driver for Oracle)

    Librairie C Open Source multi-plateformes pour accéder et manipuler des bases de données Oracle

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2009
    Messages : 41
    Par défaut
    Citation Envoyé par Vincent Rogier Voir le message
    Salut,

    Il faut utiliser les fonctions suivantes :
    Salut Vincent,

    Donc cela veut dire que ma 'boucle' d'éxécutions devra gérer les bind ou non des nulls?

    Dans les faits, je ne peux préjuger d'un bind de type NULL (ou non) qu'après analyse des valeurs à traiter dans la boucle d'exécutions.

    Je me retrouve donc dans la cas de mises à jour massives (ce qui est souvent le cas ) à refaire des binds.... snif... Cela peut t'il modifier les performances d'une manière significative ?

    Merci.
    Fly.

  4. #4
    Rédacteur
    Avatar de Vincent Rogier
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 373
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 373
    Par défaut
    La notion SQL de null n'existe pas en C.. Il est impossible de dire simplement et automatiquement "tiens, la valeur de ma variable de type int est nulle lors de la 4eme exécution".

    C'est la que les fonctions que j'ai cités entrent en jeu dans ton étape "Exécution" :

    Exemple des 4 possibilités :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
     
    #include "ocilib.h"
     
    int main(void)
    {
        OCI_Connection *cn;
        OCI_Statement *st;
     
        int code;
        int i;
     
        if (!OCI_Initialize(NULL, NULL, OCI_ENV_DEFAULT))
            return EXIT_FAILURE;
     
        cn = OCI_ConnectionCreate("db", "usr", "pwd", OCI_SESSION_DEFAULT);
     
        st = OCI_StatementCreate(cn);
     
        OCI_Prepare(st, "delete from test_fetch where code = :code");
        OCI_BindInt(st, ":code", &code);
     
        for (i = 0; i < 10; i++)
        {
          if ((i%2) == 0) 
          {
             /* 4 facons différentes d'indiquer que code est NULL */
     
             OCI_SetNull(stmt, 1);
             OCI_SetNull2(stmt, ":code");
             OCI_BindSetNull(OCI_GetBind(stmt, 1));
             OCI_BindSetNull(OCI_GetBind2(stmt,":code"));
          }
     
          OCI_Execute(st);
        }
     
        OCI_Commit(cn);
     
        OCI_Cleanup();
     
        return EXIT_SUCCESS;
    }
    Vincent Rogier.

    Rubrique ORACLE : Accueil - Forum - Tutoriels - FAQ - Livres - Blog

    Vous voulez contribuer à la rubrique Oracle ? Contactez la rubrique !

    OCILIB (C Driver for Oracle)

    Librairie C Open Source multi-plateformes pour accéder et manipuler des bases de données Oracle

Discussions similaires

  1. left join pour les nulls
    Par yojo_yojo dans le forum Linq
    Réponses: 0
    Dernier message: 19/04/2011, 14h48
  2. algorithmes pour les jeux du casino
    Par jonh8 dans le forum Algorithmes et structures de données
    Réponses: 2
    Dernier message: 29/03/2011, 05h04
  3. [Tableaux] Algorithme pour les combinaisons
    Par Death83 dans le forum Langage
    Réponses: 33
    Dernier message: 09/08/2010, 14h31
  4. Algorithme pour les thematiques d'un texte
    Par redkan dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 16/04/2009, 13h59
  5. [windev11] Windev et VOIP pour les nulles
    Par nath-0-0 dans le forum WinDev
    Réponses: 2
    Dernier message: 18/04/2008, 11h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo