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

SQL Oracle Discussion :

Meilleure déclaration d'un curseur


Sujet :

SQL Oracle

  1. #1
    Membre régulier
    Inscrit en
    Décembre 2005
    Messages
    109
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 109
    Points : 78
    Points
    78
    Par défaut Meilleure déclaration d'un curseur
    Bonjour,

    dans le cadre de l'utilisation d'un curseur je voudrais savoir si une des 2 méthodes suivantes est meilleure ou moins bonne que l'autre et le cas échéant pourquoi ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    PROCEDURE PRC_TOTO IS
    monCurs   SYS_REFCURSOR;
    vcNom   VARCHAR2(30);
    BEGIN
     
    OPEN monCurs FOR
    SELECT nom FROM MaTable WHERE ID > 0;
     
    FETCH monCurs  INTO vcNom;
     
    etc ...
     
    END PRC_TOTO;


    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
     
    CURSOR monCurs IS
    SELECT nom FROM MaTable WHERE ID > 0;
     
    PROCEDURE PRC_TOTO IS
    vcNom   VARCHAR2(30);
    BEGIN
     
    IF NOT monCurs %ISOPEN THEN
      OPEN monCurs
    END IF;
     
    FETCH monCurs  INTO vcNom;
     
    etc ...
     
    END PRC_TOTO;

    Merci pour vos réponses

  2. #2
    Membre régulier
    Inscrit en
    Décembre 2005
    Messages
    109
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 109
    Points : 78
    Points
    78
    Par défaut
    personne n'a d'idée ?

    dois je en déduire que les 2 formes se valent ?

    allez up

  3. #3
    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
    Dans votre cas de figure , je n'utilise ni l'un ni lautre mais ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Procedure PRC_TOTO IS
    Begin
     
       For MC in (Select nom FROM MaTable WHERE ID > 0)
       Loop
          etc ...
       End Loop;
     
    End PRC_TOTO;
    Concernant votre question : l'utilisation de l'attribut "%isopen" est interessante uniquement si le curseur est un curseur "partagé" par plusieurs fonction / package et ou procedure dans le cas contraire , l'utilisation de votre 1er code suffit
    Signé : Capitaine Jean-Luc Picard

  4. #4
    Membre actif
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2005
    Messages
    250
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2005
    Messages : 250
    Points : 277
    Points
    277
    Par défaut
    Même avis qu'Argoet...
    Utilise un curseur "dynamique" et ouvre le avec une boucle FOR...

    Ton code sera beaucoup plus lisible...

    Ah et si tu as besoin de ton champ nom, utilise MC.nom
    Dyvim

Discussions similaires

  1. Problème de déclaration d'un curseur dans un if
    Par amine1980 dans le forum PL/SQL
    Réponses: 2
    Dernier message: 14/08/2009, 14h58
  2. Erreur dans la déclaration d'un curseur
    Par adam57 dans le forum Forms
    Réponses: 10
    Dernier message: 24/04/2008, 18h35
  3. Réponses: 1
    Dernier message: 25/01/2008, 20h29
  4. Réponses: 5
    Dernier message: 23/02/2005, 10h43
  5. [Interbase 6][CURSOR] Déclaration de curseur
    Par nico82 dans le forum InterBase
    Réponses: 2
    Dernier message: 05/10/2004, 16h45

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