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

PL/SQL Oracle Discussion :

Curseur explicite vs cursor implicite


Sujet :

PL/SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Consultant
    Inscrit en
    Mai 2006
    Messages
    147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant

    Informations forums :
    Inscription : Mai 2006
    Messages : 147
    Par défaut Curseur explicite vs cursor implicite
    bonjour ,
    en termes de performances , de normalisation et de maintenance qu'elle est le meilleur choix dans un bloc PL/SQL :

    Curseur implicite ou explicite.
    avantages et inconvénients de chacun ?
    merci

  2. #2
    Expert confirmé Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Par défaut
    Un curseur implicite ou explicite reste un curseur! Si ce sujet vous intéresse lisez l'article "doing sql from pl/sql worst and best practices" sur OTN.

  3. #3
    Membre Expert Avatar de pacmann
    Homme Profil pro
    Consulté Oracle
    Inscrit en
    Juin 2004
    Messages
    1 626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consulté Oracle
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 626
    Par défaut
    Salut,

    Le curseur explicite permet de faire bulk collect, puis for all.
    S'il n'y a pas de mise à jour d'insertions directes à faire, le curseur implicite fait un bulk fetch automatique (je crois paramétré à 100) depuis 10g je crois...

    Le curseur implicite est plus léger en terme de lisibilité et écriture de code.
    C'est ce que je privillégie pour faire des choses simples et pas trop volumineuses.

  4. #4
    Expert confirmé Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Par défaut
    Le curseur qu’il est implicite ou explicite permet de remplir une collection via le bulk fetch. L’instruction ForAll s’applique aux collections peu importe comment elles ont été remplies (via un curseur ou construite "manuellement").
    L’optimisation que PL/SQL fait par-dessous de la table dans une boucle For utilisant un curseur implicite n’est pas synonyme de remplissage d’une collection mais c’est plutôt un « array fetch ».
    Cela étant dit il y a des différences bien plus subtiles que ça d’où ma recommandation de lire l’article.

  5. #5
    Membre Expert Avatar de pacmann
    Homme Profil pro
    Consulté Oracle
    Inscrit en
    Juin 2004
    Messages
    1 626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consulté Oracle
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 626
    Par défaut
    Oui tu as raison Mnitu sur le forall, il est parfaitement possible d'alimenter à la main sa collection.

    Sur le curseur implicite, je sais bien que ça remplit pas automatiquement une collection, c'est pour ça je disais "bulk fetch"
    ... cela dit, en soi, le principal intérêt du bulk collect est l'array fetch, non ?

  6. #6
    Expert confirmé Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Par défaut
    Bref, si vous pensez que
    Citation Envoyé par pacmann Voir le message
    ...
    Sur le curseur implicite, je sais bien que ça remplit pas automatiquement une collection, c'est pour ça je disais "bulk fetch"
    alors vous ne pouvez pas non plus dire
    le curseur implicite fait un bulk fetch automatique (je crois paramétré à 100)

Discussions similaires

  1. Supprimer une ligne via un curseur explicite
    Par Gippouet dans le forum PL/SQL
    Réponses: 4
    Dernier message: 21/11/2010, 14h18
  2. probléme avec les curseurs explicites dynamiques
    Par madina dans le forum PL/SQL
    Réponses: 3
    Dernier message: 06/08/2010, 13h45
  3. la clause group by dans un curseur explicite
    Par lucaazori1988 dans le forum Oracle
    Réponses: 5
    Dernier message: 29/04/2010, 10h36
  4. Réponses: 5
    Dernier message: 12/02/2006, 06h37
  5. [Interbase 6][CURSOR] Déclaration de curseur
    Par nico82 dans le forum InterBase
    Réponses: 2
    Dernier message: 05/10/2004, 15h45

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