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 :

la meilleur methode ???


Sujet :

Oracle

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 29
    Points : 18
    Points
    18
    Par défaut la meilleur methode ???
    Bonjour

    il y a ici dans le service informatique un petit conflict entre developpeurs et dbas sur la meilleure methode pour recuperer en base un seul record.

    exemple tout bete, recuperer un libellé traduit selon une langue et un code.

    certains utilisent la methode suivante :

    begin
    select blabla
    into truc
    from machin
    exception
    when .... then truc (ou ... depend de ce que l'on veut faire...)
    end;

    d'autres utilisent :

    cursor machin is
    select blabla
    into truc
    from machin

    open machin
    fetch machin into truc...


    voilà.

    Alors selon vous quelle est la meilleure methode des 2 ?? si meilleure methode il y a...

    Merci de votre aide.
    Greg.

  2. #2
    Expert éminent sénior
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Points : 11 862
    Points
    11 862
    Par défaut
    Il n'y a pas de meilleure méthode.

    La première utilise un curseur implicite ( Select into... )
    la seconde utilise un cursuer explicite (Cursor, open, close)

    La seconde méthode, dans le cas d'utilisation massive dans une procédure permet de ne pas atteindre la limite du nombre maxi de curseurs ouverts, car le curseur est fermé tout de suite après son utilisation.

    Dans la première méthode, il n'est fermé que suite à une fin de transaction (commit/rollback)
    Rédacteur Oracle (Oracle ACE)
    Guide Oracle ,Guide PL/SQL, Guide Forms 9i/10g, Index de recherche
    Je ne réponds pas aux questions techniques par MP
    Blogs: Forms-PL/SQL-J2EE - Forms Java Beans

  3. #3
    Expert Oracle confirmé

    Homme Profil pro
    Consultant Big Data
    Inscrit en
    Mars 2003
    Messages
    448
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Consultant Big Data
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2003
    Messages : 448
    Points : 926
    Points
    926
    Par défaut
    Bonjour,

    Dans ton cas, la meilleure méthode est la première.

    En effet, tu souhaites remonter un libellé selon le code et une langue.

    Un select ... into ... te suffit donc. De plus, cette méthode lève éventuellement 2 exceptions : NO_DATA_FOUND si le libellé n'existe pas, et TOO_MANY_ROWS si il y a plus d'une traduction (ce qui normalement ne devrait pas arriver, en supposant que le code du message et la langue forment une clé primaire).

    L'autre métode consiste à ouvrir un curseur et fetcher dessus. Or cette méthode là ne lève aucune exception ! De plus, tu n'as pas besoin d'un curseur pour récuperer un libellé. Le select ... into... de la méthode 1 suffit.

  4. #4
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 073
    Points
    19 073
    Par défaut
    D'aprés Tom Kytes, le curseur implicite est plus performant et plus facile à lire (en effet, remonter dans l'entête pour voir la requête peut devenir fastidieux si le package est gros ) : http://asktom.oracle.com/pls/ask/f?p=4950:8:::::F4950_P8_DISPLAYID:1544606261686

    There is no disputing the *facts* that:

    o implicit cursors are easier for my fingers to type in
    o implicit cursors result in less code
    o implicit cursors are faster

    YOU make the choice when YOU write the code.
    Conclusion : moins de code donc plus simple est plus rapide, un curseur implicite est meilleur

    ATTENTION : pour des raisons de maintenance, il est très avantageux de "centraliser" les requêtes en entête, surtout si elles sont réutilisées régulièrement ("et les vues alors ?" me diraient vous, et vous auriez raison )

Discussions similaires

  1. Meilleure methode pour manipuler des images
    Par etranger dans le forum Modules
    Réponses: 2
    Dernier message: 16/02/2007, 13h06
  2. meilleur methode pour parser un document mse
    Par elekis dans le forum C++
    Réponses: 4
    Dernier message: 15/01/2007, 15h58
  3. [Conception] Meilleur methode pour une opération lourde ?
    Par Death83 dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 26/08/2006, 13h50
  4. Réponses: 5
    Dernier message: 17/08/2006, 10h10
  5. [MySQL] insert check box meilleur methode
    Par digger dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 11/07/2006, 16h08

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