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] Informations disponibles avant fetch


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] Informations disponibles avant fetch
    Bonjour,

    Afin d'apporter un peu de dynamique à nos développements, nous avons besoin de contrôler sur une requête sql les différents colonnes en input / ouput.

    Lorsque l'on utilise OCI_Prepare, OCI_Execute (le petit nouveau OCI_Parse) et toutes les fonctions associées, avons-nous accès (et est-ce possible...?) à des informations sur la requête parsée?
    Bref, est-ce que la liste des binds attendus (ubinds, rbinds...) est accessible sous une quelconque forme?

    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
    C'est à dire ?

    la liste des binds d'un statement est accessible avec :

    OCI_GetBindCount() et OCI_GetBind() qui retourne un handle OCI_Bind dont tu peux explorer les propriétés..
    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
    C'est à dire ?

    la liste des binds d'un statement est accessible avec :

    OCI_GetBindCount() et OCI_GetBind() qui retourne un handle OCI_Bind dont tu peux explorer les propriétés..
    Un peu plus de précisions par l'exemple

    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
     
    	st = OCI_StatementCreate(cn);
    	OCI_Prepare(st,"select id_test1,col_02 from test1 where id_test1=:vidtest1");
     
    /*
      Je voudrai connaitre ici:
     - la liste des colonnes sélectionnées (id_test1 et col_02) 
     - la liste des binds attendus (vidtest1)
      En effet, je ne connaîtrai pas à priori le contenu de la requête
    */
     
    /*
     Les binds seront réalisés ici dynamiquement
    */
    	OCI_Execute(st);

    Donc, dois-je réaliser un parser ou est-ce qu'OCILIB peut connaitre ces informations ?

    A priori, le lien ci-dessous explique comment retrouver des informations sur la liste des items sélectionnés :

    http://download.oracle.com/docs/cd/E...ql.htm#i441217



    Merci.

  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
    je comprends mieux.

    Pour les binds, il est impossible d'avoir des infos à partir d'un ordre SQL.
    Cela est seulement possible une fois les bindings fait.

    Pour les selects, par contre, il serait possible de ne faire qu'un "describe" en terme d'OCI lors de l'appel à OCIStatementExecute() ce qui pourrait populer un resultset "vide".

    Pour le moment, la seule facon dans OCILIB c'est d'exécuter la requete et récupérer le resultset et explorer ses colonnes sans fetcher.

    De même que j'ai récemment ajouté OCI_Parse(), je pourrais rajouter une fonction OCI_Describe() qui serait un OCI_ExecuteStmt() en mode describe et qui retournerait un resultset sans aucune allocation interne pour les données du select et qui permettrait d'accéder à la définition des données... Je vais y réfléchir pour la 3.9... Le seul intêret par rapport à la solution actuelle que j'ai mentionné, c'est que d'une part il n'y aurait pas d'allocation mémoire pour les données et d'autre part que si la requête contient des appels à des séquencés, celles ci ne seraient pas modifiées.
    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. Réponses: 27
    Dernier message: 08/11/2012, 15h39
  2. Mémoire disponible avant appel d'un SetLength
    Par Rekin85 dans le forum Langage
    Réponses: 2
    Dernier message: 03/05/2012, 14h00
  3. Les premières tablettes Windows 8 d’Asus disponibles avant fin 2012 ?
    Par Hinault Romaric dans le forum Actualités
    Réponses: 1
    Dernier message: 02/11/2011, 14h08
  4. Réponses: 2
    Dernier message: 02/11/2011, 10h57
  5. Réponses: 2
    Dernier message: 11/01/2010, 00h26

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