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

Langage SQL Discussion :

Emplacement idéal des conversions de données avec les curseurs


Sujet :

Langage SQL

  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 Emplacement idéal des conversions de données avec les curseurs
    Bonjour,

    Je voudrais savoir s'il y a un intérêt au niveau du temps d'exécution dans le placement d'une conversion de données lors de l'appel d'un curseur.
    Je m'explique à l'aide d'un exemple

    Cas N°1 : Conversion dans le curseur

    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
    Déclaration du curseur :
    
    CURSOR C_CURS(	
    p_date_debut VARCHAR2, 
    p_date_fin VARCHAR2)
    IS
    	SELECT	SUM(MNT_DBT_TTC), SUM(MNT_CDT_TTC)
    	FROM	ECRITURE
    	WHERE  DAT_ECR BETWEEN TO_DATE(p_date_debut,'DD/MM/YYYY')
                         AND TO_DATE(p_date_fin,'DD/MM/YYYY');
    
    Appel du curseur :
    
    IF NOT C_CURS%ISOPEN THEN
           OPEN C_CURS ('01/01/2006', '01/06/2007');
    END IF;

    Cas N°2 : Conversion avant l'appel du curseur

    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
    Déclaration du curseur :
    
    CURSOR C_CURS(	
    p_date_debut DATE,
    p_date_fin DATE)
    IS
    	SELECT	SUM(MNT_DBT_TTC), SUM(MNT_CDT_TTC)
    	FROM	ECRITURE
    	WHERE	DAT_ECR BETWEEN p_date_debut AND p_date_fin;
    
    Appel du curseur :
    date_debut = TO_DATE('01/01/2006','DD/MM/YYYY')
    date_fin = TO_DATE('01/06/2007','DD/MM/YYYY')
    IF NOT C_CURS%ISOPEN THEN
           OPEN C_CURS (date_debut, date_fin);
    END IF;
    Merci pour vos réponses

  2. #2
    Membre éprouvé Avatar de Mathusalem
    Profil pro
    IT moa
    Inscrit en
    Décembre 2003
    Messages
    1 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : IT moa

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 008
    Points : 1 067
    Points
    1 067
    Par défaut
    réfléchi 2 min, je suis sûr que tu vas trouver.

    Dans un cas tu fais la conversion 1 fois, dans l'autre tu la fais autant de fois qu'il y a de lignes.

  3. #3
    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
    Citation Envoyé par Mathusalem
    réfléchi 2 min, je suis sûr que tu vas trouver.

    Dans un cas tu fais la conversion 1 fois, dans l'autre tu la fais autant de fois qu'il y a de lignes.
    Disons que si jai posé ma question c'est parce qu'effectivement ma première réflexion a été la même que toi à savoir que dans un cas on converti une fois et dans l'autre beaucoup plus de fois.

    Mais en réfléchissant un chouya plus, j'ai pensé qu'en fait, la requête du curseur ne s'effectue qu'une seule fois en créant le "result set" contenant toutes les données et que donc on ne fait la conversion qu'une seule fois.

    Bref histoire d'être sûr de moi je préfère poser la question qui je te l'accorde semble avoir une réponse simple mais qui au final ne m'a pas semblé si évidente.
    Maintenant j'ai peut être tort

  4. #4
    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 de réponse claire à ma question ?

  5. #5
    Membre éprouvé Avatar de Mathusalem
    Profil pro
    IT moa
    Inscrit en
    Décembre 2003
    Messages
    1 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : IT moa

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 008
    Points : 1 067
    Points
    1 067
    Par défaut
    le cas 1 est plus lisible et serait logiquement moins lourd (2 variables en moins, 2 opérations de moins par ligne à parcourir), franchement je ne chercherais pas plus loin.

Discussions similaires

  1. Réponses: 11
    Dernier message: 26/12/2009, 17h29
  2. [MySQL] Récupérer des données avec les SESSIONS
    Par dylanms dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 18/04/2009, 11h00
  3. [Article] Améliorer la présentation des données avec les Standards Web
    Par kalyparker dans le forum Publications (X)HTML et CSS
    Réponses: 0
    Dernier message: 07/04/2009, 22h18
  4. [MySQL] Insertion des données avec les caractères spéciaux
    Par rachou59650 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 02/05/2008, 11h16
  5. Exporter des données avec les insert
    Par maximenet dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 03/04/2006, 16h20

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