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

Oracle Discussion :

precision sur execution des requetes


Sujet :

Oracle

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Février 2006
    Messages
    139
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2006
    Messages : 139
    Points : 152
    Points
    152
    Par défaut precision sur execution des requetes
    Bonjour,

    pouvez-vous m'expliquer ce que représente concrètement la phase de fetch dans une instruction Oracle(lecture des blocs...).
    De cette réponse en decoulera sûrement: pourquoi pour un même ordre sql exécuté plusieurs fois, seule le fetch est executée(et pas execute)?

    Merci par avance

  2. #2
    Membre confirmé
    Avatar de argoet
    Inscrit en
    Mai 2002
    Messages
    582
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 582
    Points : 562
    Points
    562
    Par défaut
    Bonsoir,

    Vous aurez une réponse à votre question en réalisant une recherche sur les Curseurs ORACLE
    Allez regarder aussi les excellents tuto de SheikYerbouti Qui traite de ce sujet

    Voir F.A.Q Oracle Tutoriels Oracle
    Signé : Capitaine Jean-Luc Picard

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Février 2006
    Messages
    139
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2006
    Messages : 139
    Points : 152
    Points
    152
    Par défaut
    Bonjour,

    Avant de poster, j'avais essayer effectivement de trouver la reponse. J'avais vu cet article cependant je ne comprends toujours pas(faut dire je suis pas un cheval de course).
    * PARSE
    Cette étape convertit l’instruction SQL en plan d’exécution.
    Elle vérifie également que l’utilisateur bénéficie bel et bien des autorisations appropriées et que les tables , colonnes et autres objets de référence existent. Il a également une vérification syntaxique
    * EXECUTE
    Cette étape correspond à l’exécution effective de l’instruction par le serveur Oracle.
    - Insert , update et Delete cette étape modifie les données ( et effectue les tris nécessaire ).
    - Select : cette étape identifie les lignes concernées
    * FETCH
    Cette étape extrait les lignes par une requête et effectue le tri nécessaire.
    Cette partie ne concerne donc que les instructions SELECT.
    Pourquoi alors le nombre d'execute et de fetch peuvent être différents pour une requête (dans une trace par exemple)?
    Merci

  4. #4
    Membre confirmé
    Inscrit en
    Décembre 2003
    Messages
    493
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 493
    Points : 605
    Points
    605
    Par défaut
    parce que toutes les rows ne sont pas forcément ramenées en une fois

    ce qui permet parexemple d'appliquer différent traitement selon les valeurs rencontrées en parcourant le curseur

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Février 2006
    Messages
    139
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2006
    Messages : 139
    Points : 152
    Points
    152
    Par défaut
    Tout d'abord merci pour vos réponses.
    Je suis un peu lourd mais c'est toujours pas bien clair.

    Pouvez vous préciser comment toutes les rows ne peuvent pas etre ramenées en 1 seul fetch?

    Je crois qu'il va me falloir un dessin

    Merci par avance

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 9
    Points : 17
    Points
    17
    Par défaut
    le fecth est une opération séquentielle ou le client demande un certain nombres de lignes à lui retourner.
    fétcher cela consiste donc à récupérer, mais on ne désire pas récupérer un million de ligne en une fois par exemple de manière à ne pas avoir un tampon mémoire énorme nécessaire.
    C'est pourquoi on fixe une taille de tampon ou arraysize ou fetchsize .
    Tu as donc nbr fetch * arraysize = nbr de ligne retournée.

    ce paramètre arraysize est important car il détermine également le nombre de bloc lus par oracle.

    ex : imaginons que ta taille de bloc oracle soit de 8k et que les enregistrements que tu veux ramener pèse 100 octects.
    si tu veux raméner tout le contenu de ce bloc soit 80 lignes et que ton arraysize soit de 1 tu feras donc 80 fetchs.

    Mais tu devras lire également 80 fois ce bloc oracle.

    J'espère que cette explication t'aide.

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Février 2006
    Messages
    139
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2006
    Messages : 139
    Points : 152
    Points
    152
    Par défaut Merci ycolin
    Impec
    c'est très clair maintenant.
    Merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 8
    Dernier message: 06/03/2009, 09h20
  2. excel+mysql : executé des requetes avec des paramètres
    Par overider dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 18/09/2007, 21h03
  3. executer des requetes de selection sur access à partie de VBA
    Par benpinta dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 09/08/2007, 14h04
  4. Réponses: 26
    Dernier message: 23/06/2006, 15h45
  5. [VB6]exécution des requétes sql
    Par nabil dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 02/06/2006, 07h24

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